public struct TensorVisitorPlan<Base>
TensorVisitorPlan [WritableKeyPath<Base, Tensor<Float>]
değerine yakındır ancak daha verimlidir. Bu, degradeleri, mevcut ağırlıkları ve yardımcı olarak depolanan ağırlıkları bulmak için kullanılabilecek bir dizini haritalamak isteyen genel optimizasyon araçları yazmak için kullanışlıdır. Bu biraz daha verimlidir (~2x), ancak daha iyi olabilir çünkü her bir KeyPath'i izlemek için düz bir listeyle gereken O(derinlik_of_ağaç) işini yapmak zorunda kalmamak için biraz daha yüksek genel giderlerden (ekstra işaretçi referansı) ödün verir.
Planı tek bir
[WritableKeyPath<Base, Tensor<Float>]
olarak düzleştirin.beyan
public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
Tüm tensörleri verimli bir şekilde toplayın.
beyan
public func allTensors(_ v: Base) -> [Tensor<Float>]
Base
tipindeki iki değeri verimli bir şekilde eşleyin ve bir eşleme işlevi uygulayın. Tensör sayısını döndürür. EkstraInt
argümanı, planla aynı Tensör sayısına sahip yardımcı bir Tensör listesine endekslemeye izin vermek için sağlanmıştır.beyan
func populateMask<Base>(_ mask: inout [Bool], _ kp: WritableKeyPath<Base, Tensor<Float>>)
Belirli bir anahtar yolu ile biten tüm anahtarları bulun.
beyan
public func keysEnding<Base>(with kp: WritableKeyPath<Base, Tensor<Float>>) -> [Bool]
beyan
func findFirstIndex<TrueBase, T>( _ rootKeyPath: WritableKeyPath<TrueBase, Base>, _ prefix: WritableKeyPath<TrueBase, T>, _ i: inout Int ) -> Bool
Belirli bir önekle başlayan ilk anahtar yolun dizinini bulun. Not: Tüm dizi katmanları, sondan 1'e kadar indekslemeyi destekler.
beyan
func firstIndex<T>(withPrefix prefix: WritableKeyPath<Base, T>) -> Int
İki KeyPath önekiyle tanımlanan bir aralıktaki tüm anahtar dizinlerini bulun: [lower, Upper)
beyan
public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>) -> [Bool]
Belirli bir
Base
örneğindeki tüm tensörleri ziyaret etmek için bir plan oluşturur. Bu plan, Base'in yapısal olarak eşdeğer versiyonlarına aktarılabilir.beyan
public init(_ obj: Base)