TensörZiyaretçiPlanı

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. Ekstra Int 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

    @discardableResult
    public func mapTensors(
      _ v1: inout Base, _ v2: Base, _ fn: (inout Tensor<Float>, Tensor<Float>, Int) -> Void
    ) -> Int
  • 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]
'Base': 'KeyPathIterable' olduğu yerde kullanılabilir
  • 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)