Protocolos

Os protocolos a seguir estão disponíveis globalmente.

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

    Se incorporados à biblioteca padrão, esses requisitos fariam apenas parte de MutableCollection . Enquanto isso, você pode declarar a conformidade de uma coleção para MutableCollectionAlgorithms para fazer com que esses pontos de personalização sejam usados ​​a partir de outros algoritmos definidos em 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.

    Os tipos que estão em conformidade com TensorFlowScalar podem ser usados ​​como o tipo Scalar de Tensor associado.

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

    Declaração

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

    Observação

    Tensor está condicionalmente em conformidade com Differentiable quando o tipo Scalar associado está em conformidade com 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. Valores deste tipo são elementos neste espaço vetorial e não têm forma ou têm 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 fibrado 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 de vetores diferenciáveis ​​e outras propriedades armazenadas que não possuem uma derivada, por exemplo

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

    Observação

    Combine um tipo com EuclideanDifferentiable se for diferenciável apenas em relação ao seu componente do espaço vetorial e quando seu TangentVector for igual ao seu componente do espaço vetorial.

    Declaração

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

    Os tipos que estão em conformidade com Layer representam funções que mapeiam entradas para saídas. Eles podem ter um estado interno representado por parâmetros, como tensores de peso.

    As instâncias Layer definem um método callAsFunction(_:) diferenciável para mapear entradas 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 elementar” é 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 do tensor de ponto flutuante aninhados podem ser convertidos de precisão total para precisão reduzida e vice-versa.

  • Um detalhe de implementação usado para contornar o fato de que Swift não pode expressar uma restrição genérica de 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 uma instância numpy.ndarray representada como 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 convertidos em 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 semeáveis.

    Um SeedableRandomNumberGenerator pode ser usado em qualquer lugar onde um RandomNumberGenerator seria usado. É útil quando os dados pseudoaleatórios precisam ser reproduzidos em execuções.

    Em conformidade com o protocolo SeedableRandomNumberGenerator

    Para tornar um tipo personalizado em conformidade com o protocolo SeedableRandomNumberGenerator , implemente o inicializador init(seed: [UInt8]) , bem como os requisitos para RandomNumberGenerator . Os valores retornados por next() devem formar uma sequência determinística que depende apenas da semente fornecida na 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 um requisito genérico 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 que representa tipos que podem ser mapeados para Array<CTensorHandle> .

    Este protocolo é definido separadamente do TensorGroup para que o número de tensores seja determinado 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 derivado automaticamente para estruturas cujas propriedades armazenadas estão todas em conformidade com o protocolo TensorGroup . Ele não pode ser derivado automaticamente para estruturas cujas propriedades estejam todas em conformidade com TensorArrayProtocol devido ao requisito do construtor (ou seja, nesses casos seria impossível saber como dividir count entre as propriedades armazenadas).

    Declaração

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

    Quando um TensorGroup é usado como argumento para uma operação tensorial, ele é passado como uma lista de argumentos cujos elementos são os campos tensores do tipo.

    Quando um TensorGroup é retornado como resultado de uma operação tensorial, ele é inicializado com seus campos tensores definidos para os resultados tensores da operação tensorial.

    Declaração

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

    Declaração

    public protocol XLAScalarType