Los siguientes protocolos están disponibles a nivel mundial.
Proporciona puntos de personalización para
MutableCollection
algoritmos.Si se incorporan a la biblioteca estándar, estos requisitos podrían simplemente ser parte de
MutableCollection
. Mientras tanto, se puede declarar la conformidad de una colección deMutableCollectionAlgorithms
para obtener estos puntos de personalización para ser utilizados de otros algoritmos definidos enMutableCollectionAlgorithms
.Declaración
public protocol MutableCollectionAlgorithms: MutableCollection where SubSequence: MutableCollectionAlgorithms
Declaración
public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
Declaración
public protocol TensorRangeExpression
Tipos cuyos elementos se pueden clasificar en algún elemento de rango superior del mismo tipo (ejemplo: tensores, tupla de tensores)
Declaración
public protocol Collatable
Un tipo cuyas propiedades anidados y elementos pueden copiarse en un
Device
.Declaración
public protocol CopyableToDevice : _CopyableToDevice
Un tipo cuyos valores proporcionan rutas de claves personalizadas a propiedades o elementos.
Declaración
public protocol KeyPathIterable : _KeyPathIterableBase
Un tipo de datos escalares compatible con TensorFlow.
Los tipos que se ajusten a
TensorFlowScalar
se pueden utilizar como elScalar
tipo asociado deTensor
.Un tipo de datos enteros que representa tipos de números enteros que se pueden usar como índices tensoriales en TensorFlow.
Declaración
public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
A los datos de punto flotante tipo que satisfaga
Differentiable
y es compatible con TensorFlow.Nota
Tensor
ajusta condicionalmente aDifferentiable
cuando losScalar
tipo cumpla asociados aTensorFlowFloatingPoint
.Declaración
public protocol TensorFlowFloatingPoint: TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions where Self.RawSignificand: FixedWidthInteger, Self == Self.TangentVector
Un tipo que representa matemáticamente una variedad diferenciable cuyos espacios tangentes son de dimensión finita.
Declaración
public protocol Differentiable
Un tipo con valores que admiten la multiplicación puntual.
Declaración
public protocol PointwiseMultiplicative : AdditiveArithmetic
Un tipo que representa un espacio vectorial sin clasificar. Los valores de este tipo son elementos de este espacio vectorial y no tienen forma o tienen una forma estática.
Declaración
public protocol VectorProtocol : AdditiveArithmetic
Un tipo diferenciable en el espacio euclidiano. El tipo puede representar un espacio vectorial o consistir en un espacio vectorial y algún otro componente no diferenciable.
Matemáticamente, esto representa una variedad de productos que consiste en un espacio vectorial diferenciable y una variedad arbitraria, donde el paquete tangente de toda la variedad de productos es igual al componente del espacio vectorial.
Esta abstracción es útil para representar estructuras de datos diferenciables comunes que contienen propiedades vectoriales diferenciables y otras propiedades almacenadas que no tienen una derivada, p. Ej.
struct Perceptron: @memberwise EuclideanDifferentiable { var weight: SIMD16<Float> var bias: Float @noDerivative var useBias: Bool }
Nota
Conformar un tipo aEuclideanDifferentiable
si es diferenciable sólo con respecto a su componente de espacio vectorial y cuando suTangentVector
es igual a su componente de vector espacial.Declaración
public protocol EuclideanDifferentiable : Differentiable
Declaración
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
Una capa de red neuronal.
Los tipos que se ajusten a
Layer
representan las funciones que se asignan las entradas a las salidas. Pueden tener un estado interno representado por parámetros, como tensores de peso.Layer
casos definen un diferenciablecallAsFunction(_:)
método para entradas de mapeo a salidas.Declaración
public protocol Layer : Module where Self.Input : Differentiable
Una capa de red neuronal sin parámetros.
El
TangentVector
de capas sin parámetros es siempreEmptyTangentVector
.Declaración
public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
Un tipo que tiene funciones elementales disponibles.
Una “función elemental” es una función construida a partir de las potencias, raíces, exponenciales, logaritmos, funciones trigonométricas (sin, cos, tan) y sus inversas, y las funciones hiperbólicas (senh, cosh, TANH) y sus inversos.
La conformidad con este protocolo significa que todos estos componentes básicos están disponibles como funciones estáticas en el tipo.
let x: Float = 1 let y = Float.sin(x) // 0.84147096
Declaración
public protocol ElementaryFunctions
Un tipo cuyas propiedades y elementos de tensor de punto flotante anidados se pueden convertir de precisión total a precisión reducida y viceversa.
Un detalle de implementación utiliza para el trabajo en torno al hecho de que Swift no puede expresar una limitación genérica que algún tipo debe ser una instancia de
Sampling
.Declaración
public protocol SamplingProtocol : Collection
Un tipo que puede ser inicializado desde un
numpy.ndarray
ejemplo representado como unPythonObject
.Declaración
public protocol ConvertibleFromNumpyArray
Un tipo compatible bit a bit con uno o más tipos escalares NumPy.
Declaración
public protocol NumpyScalarCompatible
Un tipo cuyos valores se pueden convertir a un
PythonObject
.Declaración
public protocol PythonConvertible
Un tipo que puede ser inicializado desde un
PythonObject
.Declaración
public protocol ConvertibleFromPython
Un tipo que proporciona datos pseudoaleatorios deterministas que se pueden sembrar.
Se puede usar un SeedableRandomNumberGenerator en cualquier lugar donde se usaría un RandomNumberGenerator. Es útil cuando los datos pseudoaleatorios deben ser reproducibles entre ejecuciones.
Conforme al protocolo SeedableRandomNumberGenerator
Para hacer un tipo personalizado se ajusta a la
SeedableRandomNumberGenerator
protocolo, implementar elinit(seed: [UInt8])
inicializador, así como los requisitos paraRandomNumberGenerator
. Los valores devueltos pornext()
deben formar una secuencia determinista que depende sólo de la semilla proporcionado a la inicialización.Declaración
public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
Declaración
public protocol RandomDistribution
Una celda de capa recurrente.
Declaración
public protocol RecurrentLayerCell: Layer where Input == RNNCellInput<TimeStepInput, State>, Output == RNNCellOutput<TimeStepOutput, State>
Un tipo con valores que admiten operaciones binarias diferenciables.
Utilizado por
BidirectionalRecurrentLayer
como requisito genérico para las funciones de combinación.Declaración
public protocol Mergeable : AdditiveArithmetic, Differentiable
Declaración
public protocol TensorOperation
Declaración
public protocol TFTensorOperation : TensorOperation
Protocolo especial para llamar a operaciones de tensorflow que toman matrices heterogéneas como entrada.
Declaración
public protocol AnyTensor
Declaración
public protocol TensorProtocol
Declaración
public protocol DifferentiableTensorProtocol: TensorProtocol & Differentiable & EuclideanDifferentiable where Scalar: TensorFlowFloatingPoint
Un protocolo que representa tipos que se pueden asignar a
Array<CTensorHandle>
.Este protocolo se define por separado de
TensorGroup
para que el número de tensores que se determinen en tiempo de ejecución. Por ejemplo,[Tensor<Float>]
puede tener un número desconocido de elementos en tiempo de compilación.Este protocolo se puede derivar automáticamente para estructuras cuyas propiedades almacenado todo ajustarse a la
TensorGroup
protocolo. No se puede derivar automáticamente estructuras cuyas propiedades ajustarse a todasTensorArrayProtocol
debido al requisito constructor (es decir, en tales casos, sería imposible saber cómo rompercount
entre las propiedades almacenadas).Declaración
public protocol TensorArrayProtocol
Un protocolo que representa tipos que se pueden asignar a y desde
Array<CTensorHandle>
.Cuando un
TensorGroup
se utiliza como argumento para una operación de tensor, que se pasa como argumento una lista cuyos elementos son los campos de tensor del tipo.Cuando un
TensorGroup
se devuelve como resultado de una operación de tensor, se inicializa con sus campos de tensores fijados a los resultados del tensor de la operación tensor.Declaración
public protocol TensorGroup : TensorArrayProtocol
Un tipo de datos admitido en x10.
Declaración
public protocol XLAScalarType