Protocolos

Os seguintes protocolos estão disponíveis globalmente.

  • Fornece pontos de personalização para MutableCollection algoritmos.

    Se incorporado na biblioteca padrão, esses requisitos seria apenas parte de MutableCollection . Enquanto isso, você pode declarar a conformidade de uma coleção para MutableCollectionAlgorithms para obter esses pontos de personalização a ser utilizado a partir de outros algoritmos definidos na MutableCollectionAlgorithms .

    Declaração

    public protocol MutableCollectionAlgorithms: MutableCollection
    where SubSequence: MutableCollectionAlgorithms
  • Declaração

    public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
  • Declaração

    public protocol TensorRangeExpression
  • Tipos cujos elementos podem ser agrupados em algum elemento de classificação superior do mesmo tipo (exemplo: tensores, tupla de tensores)

    Declaração

    public protocol Collatable
  • Um tipo cujas propriedades e elementos aninhados podem ser copiados para um Device .

    Declaração

    public protocol CopyableToDevice : _CopyableToDevice
  • Um tipo cujos valores fornecem caminhos de chave personalizados para propriedades ou elementos.

    Declaração

    public protocol KeyPathIterable : _KeyPathIterableBase
  • Um tipo de dados escalar compatível com TensorFlow.

    Tipos que estejam em conformidade com TensorFlowScalar pode ser usado como o Scalar tipo associado de Tensor .

  • Um tipo de dados inteiro que representa tipos inteiros que podem ser usados ​​como índices de tensor no TensorFlow.

    Declaração

    public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
  • Um banco de dados de ponto flutuante tipo que está em conformidade com Differentiable e é compatível com TensorFlow.

    Observação

    Tensor conforma condicionalmente para Differentiable quando as Scalar tipo satisfizer associados para TensorFlowFloatingPoint .

    Declaração

    public protocol TensorFlowFloatingPoint:
      TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions
    where
      Self.RawSignificand: FixedWidthInteger,
      Self == Self.TangentVector
  • Um tipo que representa matematicamente uma variedade diferenciável cujos espaços tangentes são de dimensão finita.

    Declaração

    public protocol Differentiable
  • Um tipo com valores que suportam multiplicação pontual.

    Declaração

    public protocol PointwiseMultiplicative : AdditiveArithmetic
  • Um tipo que representa um espaço vetorial não classificado. Os valores desse tipo são elementos neste espaço vetorial e não têm forma ou têm uma forma estática.

    Declaração

    public protocol VectorProtocol : AdditiveArithmetic
  • Um tipo diferenciável no espaço euclidiano. O tipo pode representar um espaço vetorial ou consistir em um espaço vetorial e algum outro componente não diferenciável.

    Matematicamente, isso representa uma variedade de produto que consiste em um espaço vetorial diferenciável e alguma variedade arbitrária, onde o feixe tangente de toda a variedade de produto é igual ao componente do espaço vetorial.

    Esta abstração é útil para representar estruturas de dados diferenciáveis ​​comuns que contêm propriedades vetoriais diferenciáveis ​​e outras propriedades armazenadas que não possuem um derivado, por exemplo

    struct Perceptron: @memberwise EuclideanDifferentiable {
        var weight: SIMD16<Float>
        var bias: Float
        @noDerivative var useBias: Bool
    }
    

    Observação

    Conformam um tipo de EuclideanDifferentiable se é diferenciável somente com respeito à sua componente espacial vector e quando sua TangentVector é igual à sua componente espacial vetor.

    Declaração

    public protocol EuclideanDifferentiable : Differentiable
  • Uma camada de rede neural.

    Tipos que estejam em conformidade com Layer representam funções que mapeiam entradas e saídas. Eles podem ter um estado interno representado por parâmetros, como tensores de peso.

    Layer instâncias definir um diferenciável callAsFunction(_:) método para entradas de mapeamento para saídas.

    Declaração

    public protocol Layer : Module where Self.Input : Differentiable
  • Uma camada de rede neural sem parâmetros.

    O TangentVector de camadas sem parâmetros é sempre EmptyTangentVector .

    Declaração

    public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
  • Um tipo que possui funções elementares disponíveis.

    Uma “função primária” é uma função construída a partir de potências, raízes, exponenciais, logaritmos, funções trigonométricas (sin, cos, tan) e suas inversas, e as funções hiperbólicas (sinh, cosh, tanh) e suas inversas.

    A conformidade com este protocolo significa que todos esses blocos de construção estão disponíveis como funções estáticas no tipo.

    let x: Float = 1
    let y = Float.sin(x) // 0.84147096
    

    Declaração

    public protocol ElementaryFunctions
  • Um tipo cujas propriedades e elementos de tensor de ponto flutuante aninhados podem ser convertidos de precisão total para precisão reduzida e vice-versa.

  • Um detalhe de implementação utilizado para contornar o fato de que Swift não pode expressar uma restrição genérica que algum tipo deve ser uma instância de Sampling .

    Declaração

    public protocol SamplingProtocol : Collection
  • Um tipo que pode ser inicializado a partir de um numpy.ndarray exemplo representado como um PythonObject .

    Declaração

    public protocol ConvertibleFromNumpyArray
  • Um tipo que é compatível bit a bit com um ou mais tipos escalares NumPy.

    Declaração

    public protocol NumpyScalarCompatible
  • Um tipo cujos valores podem ser convertido a um PythonObject .

    Declaração

    public protocol PythonConvertible
  • Um tipo que pode ser inicializado a partir de um PythonObject .

    Declaração

    public protocol ConvertibleFromPython
  • Um tipo que fornece dados pseudoaleatórios determinísticos que podem ser propagados.

    Um SeedableRandomNumberGenerator pode ser usado em qualquer lugar onde um RandomNumberGenerator seria usado. É útil quando os dados pseudo-aleatórios precisam ser reproduzíveis nas execuções.

    Em conformidade com o protocolo SeedableRandomNumberGenerator

    Para fazer um tipo personalizado em conformidade com a SeedableRandomNumberGenerator protocolo, implementar o init(seed: [UInt8]) initializer, bem como os requisitos para RandomNumberGenerator . Os valores devolvidos por next() deve formar uma sequência determinista que depende apenas da semente fornecida durante a inicialização.

    Declaração

    public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
  • Declaração

    public protocol RandomDistribution
  • Uma célula de camada recorrente.

    Declaração

    public protocol RecurrentLayerCell: Layer
    where
      Input == RNNCellInput<TimeStepInput, State>,
      Output == RNNCellOutput<TimeStepOutput, State>
  • Um tipo com valores que suportam operações binárias diferenciáveis.

    Usado por BidirectionalRecurrentLayer como uma exigência genérica para funções de mesclagem.

    Declaração

    public protocol Mergeable : AdditiveArithmetic, Differentiable
  • Declaração

    public protocol TensorOperation
  • Declaração

    public protocol TFTensorOperation : TensorOperation
  • Protocolo especial para chamar operações de tensorflow que usam matrizes heterogêneas como entrada.

    Declaração

    public protocol AnyTensor
  • Declaração

    public protocol TensorProtocol
  • Declaração

    public protocol DifferentiableTensorProtocol:
      TensorProtocol & Differentiable & EuclideanDifferentiable
    where Scalar: TensorFlowFloatingPoint
  • Um protocolo representando tipos que podem ser mapeados para Array<CTensorHandle> .

    Este protocolo é definido separadamente TensorGroup para que o número de tensores de ser determinados em tempo de execução. Por exemplo, [Tensor<Float>] pode ter um número desconhecido de elementos em tempo de compilação.

    Este protocolo pode ser derivada automaticamente para estruturas cujas propriedades armazenados todos em conformidade com o TensorGroup protocolo. Ele não pode ser derivada automaticamente para estruturas cujas propriedades todos em conformidade com TensorArrayProtocol devido à exigência construtor (isto é, em tais casos, seria impossível saber como a quebrar count entre as propriedades armazenadas).

    Declaração

    public protocol TensorArrayProtocol
  • Um protocolo representando tipos que podem ser mapeados para e da Array<CTensorHandle> .

    Quando um TensorGroup é usado como um argumento para uma operação de tensor, que é passada como uma lista de argumentos cujos elementos são os campos de tensor do tipo.

    Quando um TensorGroup é retornado como resultado de uma operação de tensor, ele é inicializado com seus campos tensor definido para resultados tensor da operação tensor.

    Declaração

    public protocol TensorGroup : TensorArrayProtocol
  • Um tipo de dados compatível em x10.

    Declaração

    public protocol XLAScalarType