TensorVisitorPlan

public struct TensorVisitorPlan<Base>

TensorVisitorPlan aproxima [WritableKeyPath<Base, Tensor<Float>] , mas é mais eficiente. Isso é útil para escrever otimizadores genéricos que desejam mapear gradientes, pesos existentes e um índice que pode ser usado para encontrar pesos armazenados auxiliares. Isso é um pouco mais eficiente (~ 2x), mas poderia ser melhor porque compensa sobrecargas ligeiramente maiores (desreferência de ponteiro extra) por não ter que fazer o trabalho O (depth_of_tree) que é necessário com uma lista simples para rastrear cada KeyPath individual.

  • Achatar o plano como um único [WritableKeyPath<Base, Tensor<Float>] .

    Declaração

    public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
  • Colete com eficiência todos os tensores.

    Declaração

    public func allTensors(_ v: Base) -> [Tensor<Float>]
  • Eficientemente mapear mais de dois valores do tipo Base e aplicar uma função de mapeamento. Retorna o número de tensores. O adicional Int argumento é fornecido para permitir a indexação em uma lista auxiliar de tensores com a mesma contagem Tensor como o plano.

    Declaração

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

    func populateMask<Base>(_ mask: inout [Bool], _ kp: WritableKeyPath<Base, Tensor<Float>>)
  • Encontre todas as chaves que terminam com um caminho de chave específico.

    Declaração

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

    func findFirstIndex<TrueBase, T>(
      _ rootKeyPath: WritableKeyPath<TrueBase, Base>,
      _ prefix: WritableKeyPath<TrueBase, T>, _ i: inout Int
    ) -> Bool
  • Encontre o índice do primeiro caminho-chave começando com um prefixo específico. Nota: Todas as camadas da matriz suportam indexação 1-passada.

    Declaração

    func firstIndex<T>(withPrefix prefix: WritableKeyPath<Base, T>) -> Int
  • Encontre todos os índices de chaves em um intervalo definido por dois prefixos KeyPath: [inferior, superior)

    Declaração

    public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>)
      -> [Bool]

Disponível onde `Base`:` KeyPathIterable`

  • Cria um plano para visitar todos os tensores em uma instância específica de Base . Este plano é transferível para versões estruturalmente equivalentes do Base.

    Declaração

    public init(_ obj: Base)