Protocoles

Les protocoles suivants sont disponibles dans le monde entier.

  • Fournit des points de personnalisation pour les algorithmes MutableCollection .

    Si elles étaient intégrées à la bibliothèque standard, ces exigences feraient simplement partie de MutableCollection . En attendant, vous pouvez déclarer la conformité d'une collection à MutableCollectionAlgorithms pour que ces points de personnalisation soient utilisés à partir d'autres algorithmes définis sur MutableCollectionAlgorithms .

    Déclaration

    public protocol MutableCollectionAlgorithms: MutableCollection
    where SubSequence: MutableCollectionAlgorithms
  • Déclaration

    public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
  • Déclaration

    public protocol TensorRangeExpression
  • Types dont les éléments peuvent être regroupés dans un élément de rang supérieur du même type (exemple : tenseurs, tuple de tenseurs)

    Déclaration

    public protocol Collatable
  • Un type dont les propriétés et les éléments imbriqués peuvent être copiés dans un Device .

    Déclaration

    public protocol CopyableToDevice : _CopyableToDevice
  • Type dont les valeurs fournissent des chemins de clé personnalisés vers des propriétés ou des éléments.

    Déclaration

    public protocol KeyPathIterable : _KeyPathIterableBase
  • Un type de données scalaire compatible avec TensorFlow.

    Les types conformes à TensorFlowScalar peuvent être utilisés comme type Scalar associé à Tensor .

  • Un type de données entier qui représente les types entiers qui peuvent être utilisés comme indices tensoriels dans TensorFlow.

    Déclaration

    public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
  • Un type de données à virgule flottante conforme à Differentiable et compatible avec TensorFlow.

    Note

    Tensor est conditionnellement conforme à Differentiable lorsque le type associé Scalar est conforme à TensorFlowFloatingPoint .

    Déclaration

    public protocol TensorFlowFloatingPoint:
      TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions
    where
      Self.RawSignificand: FixedWidthInteger,
      Self == Self.TangentVector
  • Type qui représente mathématiquement une variété différentiable dont les espaces tangents sont de dimension finie.

    Déclaration

    public protocol Differentiable
  • Un type avec des valeurs qui prennent en charge la multiplication ponctuelle.

    Déclaration

    public protocol PointwiseMultiplicative : AdditiveArithmetic
  • Type qui représente un espace vectoriel non classé. Les valeurs de ce type sont des éléments de cet espace vectoriel et n'ont soit aucune forme, soit une forme statique.

    Déclaration

    public protocol VectorProtocol : AdditiveArithmetic
  • Un type différenciable dans l'espace euclidien. Le type peut représenter un espace vectoriel ou être constitué d'un espace vectoriel et d'un autre composant non différenciable.

    Mathématiquement, cela représente une variété de produits composée d'un espace vectoriel différentiable et d'une variété arbitraire, où le fibré tangent de l'ensemble de la variété de produits est égal à la composante de l'espace vectoriel.

    Cette abstraction est utile pour représenter des structures de données différenciables communes qui contiennent à la fois des propriétés vectorielles différentiables et d'autres propriétés stockées qui n'ont pas de dérivée, par exemple

    struct Perceptron: @memberwise EuclideanDifferentiable {
        var weight: SIMD16<Float>
        var bias: Float
        @noDerivative var useBias: Bool
    }
    

    Note

    Conformez un type à EuclideanDifferentiable s'il est différentiable uniquement par rapport à sa composante d'espace vectoriel et lorsque son TangentVector est égal à sa composante d'espace vectoriel.

    Déclaration

    public protocol EuclideanDifferentiable : Differentiable
  • Une couche de réseau neuronal.

    Les types conformes à Layer représentent des fonctions qui mappent les entrées aux sorties. Ils peuvent avoir un état interne représenté par des paramètres, tels que des tenseurs de poids.

    Les instances Layer définissent une méthode callAsFunction(_:) différentiable pour mapper les entrées aux sorties.

    Déclaration

    public protocol Layer : Module where Self.Input : Differentiable
  • Une couche de réseau neuronal sans paramètre.

    Le TangentVector des couches sans paramètre est toujours EmptyTangentVector .

    Déclaration

    public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
  • Un type qui a des fonctions élémentaires disponibles.

    Une « fonction élémentaire » est une fonction construite à partir des puissances, des racines, des exponentielles, des logarithmes, des fonctions trigonométriques (sin, cos, tan) et leurs inverses, et des fonctions hyperboliques (sinh, cosh, tanh) et leurs inverses.

    La conformité à ce protocole signifie que tous ces blocs de construction sont disponibles en tant que fonctions statiques sur le type.

    let x: Float = 1
    let y = Float.sin(x) // 0.84147096
    

    Déclaration

    public protocol ElementaryFunctions
  • Type dont les propriétés et les éléments du tenseur à virgule flottante imbriqués peuvent être convertis d'une précision totale à une précision réduite et vice versa.

  • Un détail d'implémentation utilisé pour contourner le fait que Swift ne peut pas exprimer une contrainte générique selon laquelle un type doit être une instance de Sampling .

    Déclaration

    public protocol SamplingProtocol : Collection
  • Un type qui peut être initialisé à partir d'une instance numpy.ndarray représentée sous la forme d'un PythonObject .

    Déclaration

    public protocol ConvertibleFromNumpyArray
  • Un type compatible au niveau du bit avec un ou plusieurs types scalaires NumPy.

    Déclaration

    public protocol NumpyScalarCompatible
  • Un type dont les valeurs peuvent être converties en PythonObject .

    Déclaration

    public protocol PythonConvertible
  • Un type qui peut être initialisé à partir d'un PythonObject .

    Déclaration

    public protocol ConvertibleFromPython
  • Type qui fournit des données pseudo-aléatoires déterministes amorceables.

    Un SeedableRandomNumberGenerator peut être utilisé partout où un RandomNumberGenerator serait utilisé. Ceci est utile lorsque les données pseudo-aléatoires doivent être reproductibles d’une exécution à l’autre.

    Conforme au protocole SeedableRandomNumberGenerator

    Pour rendre un type personnalisé conforme au protocole SeedableRandomNumberGenerator , implémentez l'initialiseur init(seed: [UInt8]) , ainsi que les exigences de RandomNumberGenerator . Les valeurs renvoyées par next() doivent former une séquence déterministe qui dépend uniquement de la graine fournie lors de l'initialisation.

    Déclaration

    public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
  • Déclaration

    public protocol RandomDistribution
  • Une cellule de couche récurrente.

    Déclaration

    public protocol RecurrentLayerCell: Layer
    where
      Input == RNNCellInput<TimeStepInput, State>,
      Output == RNNCellOutput<TimeStepOutput, State>
  • Un type avec des valeurs qui prennent en charge les opérations binaires différenciables.

    Utilisé par BidirectionalRecurrentLayer comme exigence générique pour les fonctions de fusion.

    Déclaration

    public protocol Mergeable : AdditiveArithmetic, Differentiable
  • Déclaration

    public protocol TensorOperation
  • Déclaration

    public protocol TFTensorOperation : TensorOperation
  • Protocole spécial pour appeler des opérations Tensorflow qui prennent des tableaux hétérogènes en entrée.

    Déclaration

    public protocol AnyTensor
  • Déclaration

    public protocol TensorProtocol
  • Déclaration

    public protocol DifferentiableTensorProtocol:
      TensorProtocol & Differentiable & EuclideanDifferentiable
    where Scalar: TensorFlowFloatingPoint
  • Protocole représentant les types qui peuvent être mappés à Array<CTensorHandle> .

    Ce protocole est défini séparément de TensorGroup afin que le nombre de tenseurs soit déterminé au moment de l'exécution. Par exemple, [Tensor<Float>] peut avoir un nombre inconnu d'éléments au moment de la compilation.

    Ce protocole peut être dérivé automatiquement pour les structures dont les propriétés stockées sont toutes conformes au protocole TensorGroup . Il ne peut pas être dérivé automatiquement pour les structures dont les propriétés sont toutes conformes à TensorArrayProtocol en raison des exigences du constructeur (c'est-à-dire que dans de tels cas, il serait impossible de savoir comment répartir count entre les propriétés stockées).

    Déclaration

    public protocol TensorArrayProtocol
  • Protocole représentant les types qui peuvent être mappés vers et depuis Array<CTensorHandle> .

    Lorsqu'un TensorGroup est utilisé comme argument dans une opération tensorielle, il est transmis sous forme de liste d'arguments dont les éléments sont les champs tensoriels du type.

    Lorsqu'un TensorGroup est renvoyé à la suite d'une opération tensorielle, il est initialisé avec ses champs tensoriels définis sur les résultats tensoriels de l'opération tensorielle.

    Déclaration

    public protocol TensorGroup : TensorArrayProtocol
  • Un type de données pris en charge dans x10.

    Déclaration

    public protocol XLAScalarType