public struct TensorVisitorPlan<Base>
TensorVisitorPlan se rapproche de [WritableKeyPath<Base, Tensor<Float>]
mais est plus efficace. Ceci est utile pour écrire des optimiseurs génériques qui souhaitent cartographier les gradients, les poids existants et un index qui peut être utilisé pour trouver des poids stockés auxiliairement. C'est légèrement plus efficace (~ 2x) mais cela pourrait être mieux car cela échange des frais généraux légèrement plus élevés (déréférencement de pointeur supplémentaire) pour ne pas avoir à effectuer le travail O (deep_of_tree) requis avec une liste simple pour retrouver chaque KeyPath individuel.
Aplatissez le plan en un seul
[WritableKeyPath<Base, Tensor<Float>]
.Déclaration
public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
Collectez efficacement tous les tenseurs.
Déclaration
public func allTensors(_ v: Base) -> [Tensor<Float>]
Mappez efficacement deux valeurs de type
Base
et appliquez une fonction de mappage. Renvoie le nombre de tenseurs. L'argumentInt
supplémentaire est fourni pour permettre l'indexation dans une liste auxiliaire de Tensors avec le même nombre de Tensors que le plan.Déclaration
func populateMask<Base>(_ mask: inout [Bool], _ kp: WritableKeyPath<Base, Tensor<Float>>)
Recherchez toutes les clés se terminant par un chemin de clé particulier.
Déclaration
public func keysEnding<Base>(with kp: WritableKeyPath<Base, Tensor<Float>>) -> [Bool]
Déclaration
func findFirstIndex<TrueBase, T>( _ rootKeyPath: WritableKeyPath<TrueBase, Base>, _ prefix: WritableKeyPath<TrueBase, T>, _ i: inout Int ) -> Bool
Recherchez l'index du premier chemin de clé commençant par un préfixe particulier. Remarque : Toutes les couches de tableau prennent en charge l'indexation 1 après la fin.
Déclaration
func firstIndex<T>(withPrefix prefix: WritableKeyPath<Base, T>) -> Int
Rechercher tous les indices de clés dans une plage définie par deux préfixes KeyPath : [inférieur, supérieur)
Déclaration
public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>) -> [Bool]
Crée un plan pour visiter tous les tenseurs dans une instance particulière de
Base
. Ce plan est transférable aux versions structurellement équivalentes de Base.Déclaration
public init(_ obj: Base)