Reserve a data! O Google I / O retorna de 18 a 20 de maio Registre-se agora
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Diferenciável

public protocol Differentiable

Um tipo que representa matematicamente uma variedade diferenciável cujos espaços tangentes são de dimensão finita.

  • Um tipo que representa os derivados de um valor diferenciável.

    Matematicamente, isso é equivalente ao feixe tangente da variedade diferenciável representada pelo tipo diferenciável.

    Declaração

    associatedtype TangentVector: Differentiable & AdditiveArithmetic
      where TangentVector.TangentVector == TangentVector
  • Move- self ao longo da direção dada. Na geometria Riemannianos, isto é equivalente a mapa exponencial, que se move self na superfície geodésica ao longo do dado vector tangente.

    Declaração

    mutating mutating func move(along direction: TangentVector)
  • Um fechamento que produz um vetor tangente zero, capturando informações mínimas necessárias de self .

    move(along: zeroTangentVectorInitializer()) não deve modificar self .

    Em alguns casos, o vetor tangente zero de self é igual a TangentVector.zero . Em outros casos, o vetor tangente zero depende das informações em self , como a forma de um tipo de matriz n-dimensional. Para programação diferenciável, é mais eficiente em termos de memória definir uma propriedade zeroTangentVectorInitializer customizada que retorna um fechamento que captura e usa apenas as informações necessárias para criar um vetor tangente zero. Por exemplo:

    struct Vector {
        var scalars: [Float]
        var count: Int { scalars.count }
        init(scalars: [Float]) { ... }
        init(repeating repeatedElement: Float, count: Int) { ... }
    }
    
    extension Vector: AdditiveArithmetic { ... }
    
    extension Vector: Differentiable {
        typealias TangentVector = Vector
    
        @noDerivative
        var zeroTangentVectorInitializer: () -> TangentVector {
            let count = self.count
            return { TangentVector(repeating: 0, count: count) }
        }
    }
    

    Declaração

    var zeroTangentVectorInitializer: () -> TangentVector { get }
  • zeroTangentVector

    Método de extensão

    Um vetor tangente inicializado usando zeroTangentVectorInitializer . move(along: zeroTangentVector) não deve modificar self .

    Declaração

    var zeroTangentVector: TangentVector { get }
  • withRecomputationInPullbacks (_ :)

    Método de extensão

    Declaração

    @differentiable(wrt: self)
    func withRecomputationInPullbacks<Result : Differentiable>(
      _ body: @escaping @differentiable (Self) -> Result
    ) -> Result
  • withDerivative (_ :)

    Método de extensão

    Aplica o fechamento fornecido à derivada de self .

    Retorna self como uma função de identidade. Quando o valor de retorno é usado em um contexto onde é diferenciado em relação a, aplica o fechamento fornecido à derivada do valor de retorno.

    Declaração

    @differentiable(wrt: self)
    func withDerivative(_ body: @escaping (inout TangentVector) -> Void) -> Self
  • sequenciado (por meio de: _ :)

    Método de extensão

    Retorna a saída calculada aplicando uma sequência de camadas à saída da camada anterior, exceto que a entrada da primeira camada é self .

    Declaração

    @differentiable
    public func sequenced<L1: Layer, L2: Layer>(through l1: L1, _ l2: L2) -> L2.Output
    where L1.Input == Self, L1.Output == L2.Input

    Parâmetros

    l1

    A primeira camada.

    l2

    A segunda camada.

    Valor de retorno

    A saída da camada final após a aplicação sequencial.

  • sequenciado (por meio de: _: _ :)

    Método de extensão

    Retorna a saída calculada aplicando uma sequência de camadas à saída da camada anterior, exceto que a entrada da primeira camada é self .

    Declaração

    @differentiable
    public func sequenced<L1: Layer, L2: Layer, L3: Layer>(through l1: L1, _ l2: L2, _ l3: L3)
      -> L3.Output
    where L1.Input == Self, L1.Output == L2.Input, L2.Output == L3.Input

    Parâmetros

    l1

    A primeira camada.

    l2

    A segunda camada.

    l3

    A terceira camada.

    Valor de retorno

    A saída da camada final após a aplicação sequencial.

  • Retorna a saída calculada aplicando uma sequência de camadas à saída da camada anterior, exceto que a entrada da primeira camada é self .

    Declaração

    @differentiable
    public func sequenced<L1: Layer, L2: Layer, L3: Layer, L4: Layer>(
      through l1: L1, _ l2: L2, _ l3: L3, _ l4: L4
    ) -> L4.Output
    where
      L1.Input == Self, L1.Output == L2.Input, L2.Output == L3.Input,
      L3.Output == L4.Input

    Parâmetros

    l1

    A primeira camada.

    l2

    A segunda camada.

    l3

    A terceira camada.

    l4

    A quarta camada.

    Valor de retorno

    A saída da camada final após a aplicação sequencial.

  • Retorna a saída calculada aplicando uma sequência de camadas à saída da camada anterior, exceto que a entrada da primeira camada é self .

    Declaração

    @differentiable
    public func sequenced<L1: Layer, L2: Layer, L3: Layer, L4: Layer, L5: Layer>(
      through l1: L1, _ l2: L2, _ l3: L3, _ l4: L4, _ l5: L5
    ) -> L5.Output
    where
      L1.Input == Self, L1.Output == L2.Input, L2.Output == L3.Input, L3.Output == L4.Input,
      L4.Output == L5.Input

    Parâmetros

    l1

    A primeira camada.

    l2

    A segunda camada.

    l3

    A terceira camada.

    l4

    A terceira camada.

    l5

    A quinta camada.

    Valor de retorno

    A saída da camada final após a aplicação sequencial.

  • Retorna a saída calculada aplicando uma sequência de camadas à saída da camada anterior, exceto que a entrada da primeira camada é self .

    Declaração

    @differentiable
    public func sequenced<L1: Layer, L2: Layer, L3: Layer, L4: Layer, L5: Layer, L6: Layer>(
      through l1: L1, _ l2: L2, _ l3: L3, _ l4: L4, _ l5: L5, _ l6: L6
    ) -> L6.Output
    where
      L1.Input == Self, L1.Output == L2.Input, L2.Output == L3.Input, L3.Output == L4.Input,
      L4.Output == L5.Input, L5.Output == L6.Input

    Parâmetros

    l1

    A primeira camada.

    l2

    A segunda camada.

    l3

    A terceira camada.

    l4

    A terceira camada.

    l5

    A quinta camada.

    l6

    A sexta camada.

    Valor de retorno

    A saída da camada final após a aplicação sequencial.