TensorVisitorPlan

public struct TensorVisitorPlan<Base>

TensorVisitorPlan به [WritableKeyPath<Base, Tensor<Float>] تقریبی است اما کارآمدتر است. این برای نوشتن بهینه‌سازهای عمومی که می‌خواهند بر روی گرادیان‌ها، وزن‌های موجود، و شاخصی که می‌تواند برای یافتن وزن‌های ذخیره شده کمکی استفاده شود، نقشه‌برداری کنند، مفید است. این کمی کارآمدتر است (~2x) اما می‌تواند بهتر باشد زیرا هزینه‌های سربار کمی بالاتر (ارجاع اشاره گر اضافی) را برای عدم انجام کارهای O(depth_of_tree) که با یک لیست ساده برای ردیابی هر KeyPath مورد نیاز است، عوض می‌کند.

  • طرح را به عنوان یک واحد [WritableKeyPath<Base, Tensor<Float>] صاف کنید.

    اعلام

    public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
  • به طور موثر همه تانسورها را جمع آوری کنید.

    اعلام

    public func allTensors(_ v: Base) -> [Tensor<Float>]
  • نگاشت کارآمد بر روی دو مقدار از نوع Base و اعمال یک تابع نگاشت. تعداد تانسورها را برمی‌گرداند. آرگومان Int اضافی ارائه شده است تا امکان نمایه سازی در لیست کمکی تانسورها با تعداد تانسور مشابه طرح را فراهم کند.

    اعلام

    @discardableResult
    public func mapTensors(
      _ v1: inout Base, _ v2: Base, _ fn: (inout Tensor<Float>, Tensor<Float>, Int) -> Void
    ) -> Int
  • اعلام

    func populateMask<Base>(_ mask: inout [Bool], _ kp: WritableKeyPath<Base, Tensor<Float>>)
  • همه کلیدهایی که به یک مسیر کلیدی خاص ختم می شوند را پیدا کنید.

    اعلام

    public func keysEnding<Base>(with kp: WritableKeyPath<Base, Tensor<Float>>) -> [Bool]
  • اعلام

    func findFirstIndex<TrueBase, T>(
      _ rootKeyPath: WritableKeyPath<TrueBase, Base>,
      _ prefix: WritableKeyPath<TrueBase, T>, _ i: inout Int
    ) -> Bool
  • فهرست اولین مسیر کلیدی را که با یک پیشوند خاص شروع می شود، پیدا کنید. توجه: همه لایه‌های آرایه از نمایه‌سازی 1-past-the-end پشتیبانی می‌کنند.

    اعلام

    func firstIndex<T>(withPrefix prefix: WritableKeyPath<Base, T>) -> Int
  • همه شاخص‌های کلیدها را در یک محدوده تعریف شده با دو پیشوند KeyPath پیدا کنید: [پایین، بالا)

    اعلام

    public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>)
      -> [Bool]
در جایی که «Base»: «KeyPathIterable» موجود است
  • طرحی برای بازدید از همه تانسورها در یک نمونه خاص از Base ایجاد می کند. این طرح به نسخه های ساختاری معادل Base قابل انتقال است.

    اعلام

    public init(_ obj: Base)