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
اضافی ارائه شده است تا امکان نمایه سازی در لیست کمکی تانسورها با تعداد تانسور مشابه طرح را فراهم کند.اعلامیه
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
ایجاد می کند. این طرح به نسخه های ساختاری معادل Base قابل انتقال است.اعلامیه
public init(_ obj: Base)