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 paraMutableCollectionAlgorithms
para fazer com que esses pontos de personalização sejam usados a partir de outros algoritmos definidos emMutableCollectionAlgorithms
.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 tipoScalar
deTensor
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 comDifferentiable
quando o tipoScalar
associado está em conformidade comTensorFlowFloatingPoint
.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 comEuclideanDifferentiable
se for diferenciável apenas em relação ao seu componente do espaço vetorial e quando seuTangentVector
for igual ao seu componente do espaço vetorial.Declaração
public protocol EuclideanDifferentiable : Differentiable
Declaração
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
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étodocallAsFunction(_:)
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 é sempreEmptyTangentVector
.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 comoPythonObject
.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 inicializadorinit(seed: [UInt8])
, bem como os requisitos paraRandomNumberGenerator
. Os valores retornados pornext()
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 comTensorArrayProtocol
devido ao requisito do construtor (ou seja, nesses casos seria impossível saber como dividircount
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