public struct TensorVisitorPlan<Base>
TensorVisitorPlan si avvicina a [WritableKeyPath<Base, Tensor<Float>]
ma è più efficiente. Ciò è utile per scrivere ottimizzatori generici che desiderano mappare i gradienti, i pesi esistenti e un indice che può essere utilizzato per trovare pesi memorizzati ausiliari. Questo è leggermente più efficiente (~2x) ma potrebbe essere migliore perché compensa spese generali leggermente più elevate (dereferenziazione extra del puntatore) per non dover eseguire il lavoro O (profondità_of_tree) richiesto con un elenco semplice per rintracciare ogni singolo KeyPath.
Appiattire il piano come un singolo
[WritableKeyPath<Base, Tensor<Float>]
.Dichiarazione
public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
Raccogli in modo efficiente tutti i tensori.
Dichiarazione
public func allTensors(_ v: Base) -> [Tensor<Float>]
Mappare in modo efficiente due valori di tipo
Base
e applicare una funzione di mappatura. Restituisce il numero di tensori. L'argomentoInt
aggiuntivo viene fornito per consentire l'indicizzazione in un elenco ausiliario di tensori con lo stesso conteggio di tensori del piano.Dichiarazione
func populateMask<Base>(_ mask: inout [Bool], _ kp: WritableKeyPath<Base, Tensor<Float>>)
Trova tutte le chiavi che terminano con un particolare percorso chiave.
Dichiarazione
public func keysEnding<Base>(with kp: WritableKeyPath<Base, Tensor<Float>>) -> [Bool]
Dichiarazione
func findFirstIndex<TrueBase, T>( _ rootKeyPath: WritableKeyPath<TrueBase, Base>, _ prefix: WritableKeyPath<TrueBase, T>, _ i: inout Int ) -> Bool
Trova l'indice del primo percorso chiave che inizia con un prefisso particolare. Nota: tutti i livelli dell'array supportano l'indicizzazione 1 oltre la fine.
Dichiarazione
func firstIndex<T>(withPrefix prefix: WritableKeyPath<Base, T>) -> Int
Trova tutti gli indici delle chiavi in un intervallo definito da due prefissi KeyPath: [inferiore, superiore)
Dichiarazione
public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>) -> [Bool]
Crea un piano per visitare tutti i tensori in una particolare istanza di
Base
. Questo piano è trasferibile a versioni strutturalmente equivalenti di Base.Dichiarazione
public init(_ obj: Base)