Los siguientes protocolos están disponibles a nivel mundial.
Proporciona puntos de personalización para los algoritmos
MutableCollection
.Si se incorporan a la biblioteca estándar, estos requisitos serían solo parte de
MutableCollection
. Mientras tanto, puede declarar la conformidad de una colección conMutableCollectionAlgorithms
para que estos puntos de personalización se utilicen desde 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 cotejar en algún elemento de rango superior del mismo tipo (ejemplo: tensores, tupla de tensores)
Declaración
public protocol Collatable
Un tipo cuyas propiedades y elementos anidados se pueden copiar a un
Device
.Declaración
public protocol CopyableToDevice : _CopyableToDevice
Un tipo cuyos valores proporcionan rutas clave personalizadas a propiedades o elementos.
Declaración
public protocol KeyPathIterable : _KeyPathIterableBase
Un tipo de datos escalar compatible con TensorFlow.
Los tipos que se ajustan a
TensorFlowScalar
se pueden usar como el tipo deTensor
asociadoScalar
.Un tipo de datos entero que representa tipos enteros que se pueden usar como índices tensoriales en TensorFlow.
Declaración
public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
Un tipo de datos de punto flotante que se ajusta a
Differentiable
y es compatible con TensorFlow.Nota
Tensor
se ajusta condicionalmente aDifferentiable
cuando el tipo asociadoScalar
se ajusta 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 no clasificado. Los valores de este tipo son elementos en este espacio vectorial y no tienen forma o tienen una forma estática.
Declaración
public protocol VectorProtocol : AdditiveArithmetic
Un tipo que es 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 consta de un espacio vectorial diferenciable y alguna 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, por ejemplo
struct Perceptron: @memberwise EuclideanDifferentiable { var weight: SIMD16<Float> var bias: Float @noDerivative var useBias: Bool }
Nota
Conforme 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 espacio vectorial.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 ajustan a
Layer
representan funciones que asignan entradas a salidas. Pueden tener un estado interno representado por parámetros, como tensores de peso.Las instancias
Layer
definen un métodocallAsFunction(_:)
diferenciable para asignar entradas 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 siempre esEmptyTangentVector
.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 potencias, raíces, exponenciales, logaritmos, funciones trigonométricas (sin, cos, tanh) y sus inversas, y funciones hiperbólicas (sinh, cosh, tanh) y sus inversas.
La conformidad con este protocolo significa que todos estos bloques de construcción 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 tensoriales de punto flotante anidados se pueden convertir de precisión total a precisión reducida y viceversa.
Un detalle de implementación utilizado para solucionar el hecho de que Swift no puede expresar una restricción genérica de que algún tipo debe ser una instancia de
Sampling
.Declaración
public protocol SamplingProtocol : Collection
Un tipo que se puede inicializar desde una instancia
numpy.ndarray
representada comoPythonObject
.Declaración
public protocol ConvertibleFromNumpyArray
Un tipo que es compatible bit a bit con uno o más tipos escalares de NumPy.
Declaración
public protocol NumpyScalarCompatible
Un tipo cuyos valores se pueden convertir en
PythonObject
.Declaración
public protocol PythonConvertible
Un tipo que se puede inicializar desde un
PythonObject
.Declaración
public protocol ConvertibleFromPython
Un tipo que proporciona datos pseudoaleatorios deterministas sembrables.
Un SeedableRandomNumberGenerator se puede usar en cualquier lugar donde se usaría un RandomNumberGenerator. Es útil cuando los datos pseudoaleatorios deben ser reproducibles en todas las ejecuciones.
Conforme al protocolo SeedableRandomNumberGenerator
Para hacer que un tipo personalizado se ajuste al protocolo
SeedableRandomNumberGenerator
, implemente el inicializadorinit(seed: [UInt8])
, así como los requisitos paraRandomNumberGenerator
. Los valores devueltos pornext()
deben formar una secuencia determinista que dependa únicamente de la semilla proporcionada durante 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 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 la cantidad de tensores se determine en tiempo de ejecución. Por ejemplo,[Tensor<Float>]
puede tener una cantidad desconocida de elementos en el momento de la compilación.Este protocolo se puede derivar automáticamente para estructuras cuyas propiedades almacenadas se ajusten al protocolo
TensorGroup
. No se puede derivar automáticamente para estructuras cuyas propiedades se ajusten aTensorArrayProtocol
debido al requisito del constructor (es decir, en tales casos sería imposible saber cómo desglosarcount
entre las propiedades almacenadas).Declaración
public protocol TensorArrayProtocol
Un protocolo que representa tipos que se pueden asignar hacia y desde
Array<CTensorHandle>
.Cuando se utiliza un
TensorGroup
como argumento para una operación tensorial, se pasa como una lista de argumentos cuyos elementos son los campos tensoriales del tipo.Cuando se devuelve un
TensorGroup
como resultado de una operación tensorial, se inicializa con sus campos tensoriales establecidos según los resultados tensoriales de la operación tensorial.Declaración
public protocol TensorGroup : TensorArrayProtocol
Un tipo de datos compatible en x10.
Declaración
public protocol XLAScalarType