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 paraMutableCollectionAlgorithms
para obter esses pontos de personalização a ser utilizado a partir de outros algoritmos definidos naMutableCollectionAlgorithms
.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 oScalar
tipo associado deTensor
.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 paraDifferentiable
quando asScalar
tipo satisfizer associados paraTensorFlowFloatingPoint
.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 deEuclideanDifferentiable
se é diferenciável somente com respeito à sua componente espacial vector e quando suaTangentVector
é igual à sua componente espacial vetor.Declaração
public protocol EuclideanDifferentiable : Differentiable
Declaração
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
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ávelcallAsFunction(_:)
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 é sempreEmptyTangentVector
.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 umPythonObject
.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 oinit(seed: [UInt8])
initializer, bem como os requisitos paraRandomNumberGenerator
. Os valores devolvidos pornext()
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 comTensorArrayProtocol
devido à exigência construtor (isto é, em tais casos, seria impossível saber como a quebrarcount
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