Protocolos

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 de MutableCollectionAlgorithms para obtener estos puntos de personalización para ser utilizados de otros algoritmos definidos en MutableCollectionAlgorithms .

    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 el Scalar tipo asociado de Tensor .

  • 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 a Differentiable cuando los Scalar tipo cumpla asociados a TensorFlowFloatingPoint .

    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 a EuclideanDifferentiable si es diferenciable sólo con respecto a su componente de espacio vectorial y cuando su TangentVector es igual a su componente de vector espacial.

    Declaración

    public protocol EuclideanDifferentiable : Differentiable
  • 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 diferenciable callAsFunction(_:) 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 siempre EmptyTangentVector .

    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 un PythonObject .

    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 el init(seed: [UInt8]) inicializador, así como los requisitos para RandomNumberGenerator . Los valores devueltos por next() 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 todas TensorArrayProtocol debido al requisito constructor (es decir, en tales casos, sería imposible saber cómo romper count 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