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 surMutableCollectionAlgorithms
.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 typeScalar
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 sonTangentVector
est égal à sa composante d'espace vectoriel.Déclaration
public protocol EuclideanDifferentiable : Differentiable
Déclaration
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
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éthodecallAsFunction(_:)
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 toujoursEmptyTangentVector
.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'unPythonObject
.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'initialiseurinit(seed: [UInt8])
, ainsi que les exigences deRandomNumberGenerator
. Les valeurs renvoyées parnext()
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épartircount
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