TensorVisitorPlan

public struct TensorVisitorPlan<Base>

TensorVisitorPlan mendekati [WritableKeyPath<Base, Tensor<Float>] tetapi lebih efisien. Hal ini berguna untuk menulis pengoptimal umum yang ingin memetakan gradien, bobot yang ada, dan indeks yang dapat digunakan untuk menemukan bobot tambahan yang disimpan. Ini sedikit lebih efisien (~2x) tetapi bisa lebih baik karena mengorbankan overhead yang sedikit lebih tinggi (dereferensi penunjuk tambahan) karena tidak harus melakukan pekerjaan O(kedalaman_of_tree) yang diperlukan dengan daftar biasa untuk melacak masing-masing KeyPath.

  • Ratakan rencana sebagai satu [WritableKeyPath<Base, Tensor<Float>] .

    Pernyataan

    public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
  • Kumpulkan semua tensor secara efisien.

    Pernyataan

    public func allTensors(_ v: Base) -> [Tensor<Float>]
  • Memetakan dua nilai bertipe Base secara efisien dan menerapkan fungsi pemetaan. Mengembalikan jumlah tensor. Argumen Int tambahan disediakan untuk memungkinkan pengindeksan ke dalam daftar tambahan Tensor dengan jumlah Tensor yang sama dengan rencana.

    Pernyataan

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

    func populateMask<Base>(_ mask: inout [Bool], _ kp: WritableKeyPath<Base, Tensor<Float>>)
  • Temukan semua kunci yang diakhiri dengan jalur kunci tertentu.

    Pernyataan

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

    func findFirstIndex<TrueBase, T>(
      _ rootKeyPath: WritableKeyPath<TrueBase, Base>,
      _ prefix: WritableKeyPath<TrueBase, T>, _ i: inout Int
    ) -> Bool
  • Temukan indeks jalur tombol pertama yang dimulai dengan awalan tertentu. Catatan: Semua lapisan array mendukung pengindeksan 1-past-the-end.

    Pernyataan

    func firstIndex<T>(withPrefix prefix: WritableKeyPath<Base, T>) -> Int
  • Temukan semua indeks kunci dalam rentang yang ditentukan oleh dua awalan KeyPath: [bawah, atas)

    Pernyataan

    public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>)
      -> [Bool]
Tersedia di mana `Base`: `KeyPathIterable`
  • Membuat rencana untuk mengunjungi semua tensor dalam instance Base tertentu. Rencana ini dapat dialihkan ke versi Base yang setara secara struktural.

    Pernyataan

    public init(_ obj: Base)