protocolos

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 con MutableCollectionAlgorithms para que estos puntos de personalización se utilicen desde 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 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 de Tensor asociado Scalar .

  • 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 a Differentiable cuando el tipo asociado Scalar se ajusta 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 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 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 espacio vectorial.

    Declaración

    public protocol EuclideanDifferentiable : Differentiable
  • 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étodo callAsFunction(_:) 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 es 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 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 como PythonObject .

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