public struct TensorVisitorPlan<Base>
TensorVisitorPlan aproxima [WritableKeyPath<Base, Tensor<Float>]
, pero es más eficiente. Esto es útil para escribir optimizadores genéricos que desean mapear los gradientes, los pesos existentes y un índice que se puede usar para encontrar pesos almacenados de forma auxiliar. Esto es un poco más eficiente (~ 2x) pero podría ser mejor porque compensa gastos generales ligeramente más altos (desreferencia del puntero adicional) por no tener que hacer el trabajo O (profundidad_de_árbol) que se requiere con una lista simple para rastrear cada KeyPath individual.
Aplanar el plan como un solo
[WritableKeyPath<Base, Tensor<Float>]
.Declaración
public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
Recoja de forma eficiente todos los tensores.
Declaración
public func allTensors(_ v: Base) -> [Tensor<Float>]
De manera eficiente asignar más de dos valores de tipo
Base
y aplicar una función de mapeo. Devuelve el número de tensores. El extraInt
se proporciona el argumento para permitir la indexación en una lista de auxiliares de tensores con el mismo número Tensor según el plan.Declaración
func populateMask<Base>(_ mask: inout [Bool], _ kp: WritableKeyPath<Base, Tensor<Float>>)
Encuentra todas las claves que terminan con una ruta de clave en particular.
Declaración
public func keysEnding<Base>(with kp: WritableKeyPath<Base, Tensor<Float>>) -> [Bool]
Declaración
func findFirstIndex<TrueBase, T>( _ rootKeyPath: WritableKeyPath<TrueBase, Base>, _ prefix: WritableKeyPath<TrueBase, T>, _ i: inout Int ) -> Bool
Busque el índice de la primera ruta clave que comienza con un prefijo en particular. Nota: Todas las capas de la matriz admiten la indexación de 1 pasado al final.
Declaración
func firstIndex<T>(withPrefix prefix: WritableKeyPath<Base, T>) -> Int
Encuentre todos los índices de claves en un rango definido por dos prefijos de KeyPath: [inferior, superior)
Declaración
public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>) -> [Bool]
Crea un plan para visitar todos los tensores en un caso particular de
Base
. Este plan es transferible a versiones estructuralmente equivalentes de Base.Declaración
public init(_ obj: Base)