Les protocoles suivants sont disponibles dans le monde entier.
Fournit des points de personnalisation pour
MutableCollection
algorithmes.Si incorporée dans la bibliothèque standard, ces exigences seraient tout simplement partie de
MutableCollection
. En attendant, vous pouvez déclarer la conformité d'une collection àMutableCollectionAlgorithms
pour obtenir ces points de personnalisation à utiliser 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 sur un
Device
.Déclaration
public protocol CopyableToDevice : _CopyableToDevice
Un 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 qui sont conformes à
TensorFlowScalar
peuvent être utilisés commeScalar
type associé deTensor
.Un type de données entier qui représente des types entiers pouvant être utilisés comme indices de tenseur dans TensorFlow.
Déclaration
public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
Une donnée à virgule flottante de type qui est conforme à
Differentiable
et est compatible avec tensorflow.Noter
Tensor
conforme à conditionnellement àDifferentiable
lorsque leScalar
type associé est conforme àTensorFlowFloatingPoint
.Déclaration
public protocol TensorFlowFloatingPoint: TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions where Self.RawSignificand: FixedWidthInteger, Self == Self.TangentVector
Un 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 par points.
Déclaration
public protocol PointwiseMultiplicative : AdditiveArithmetic
Un 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 aucune forme ou une forme statique.
Déclaration
public protocol VectorProtocol : AdditiveArithmetic
Un type différentiable dans l'espace euclidien. Le type peut représenter un espace vectoriel, ou consister en un espace vectoriel et un autre composant non différentiable.
Mathématiquement, cela représente une variété de produits qui se compose 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 }
Noter
Conform un type deEuclideanDifferentiable
si elle est différentiable uniquement par rapport à son composant d'espace vectoriel , et lorsque sonTangentVector
est égale à sa composante d'espace de vecteur.Déclaration
public protocol EuclideanDifferentiable : Differentiable
Déclaration
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
Une couche de réseau de neurones.
Les types qui sont conformes à la
Layer
représentent des fonctions que les entrées de carte aux sorties. Ils peuvent avoir un état interne représenté par des paramètres, tels que des tenseurs de poids.Layer
instances définissent une différentiablecallAsFunction(_:)
méthode pour les entrées de mappage aux sorties.Déclaration
public protocol Layer : Module where Self.Input : Differentiable
Une couche de réseau de neurones sans paramètre.
Le
TangentVector
des couches est toujours sans paramètreEmptyTangentVector
.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 construit des puissances, des racines, exponentielles, logarithmes, fonctions trigonométriques (sin, cos, tan) et leurs inverses, les 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
Un type dont les propriétés et les éléments de tenseur à virgule flottante imbriqués peuvent être convertis d'une précision totale à une précision réduite et vice versa.
Un détail de mise en œuvre utilisée au travail autour du fait que Swift ne peut pas exprimer une contrainte générique qu'un certain type doit être une instance d'
Sampling
.Déclaration
public protocol SamplingProtocol : Collection
Un type qui peut être initialisée à partir d' un
numpy.ndarray
exemple représenté comme 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 un
PythonObject
.Déclaration
public protocol PythonConvertible
Un type qui peut être initialisé à partir d' un
PythonObject
.Déclaration
public protocol ConvertibleFromPython
Un type qui fournit des données pseudo-aléatoires déterministes ensemencées.
Un SeedableRandomNumberGenerator peut être utilisé partout où un RandomNumberGenerator serait utilisé. Il est utile lorsque les données pseudo-aléatoires doivent être reproductibles d'une exécution à l'autre.
Conformité au protocole SeedableRandomNumberGenerator
Pour un type personnalisé conforme au
SeedableRandomNumberGenerator
protocole, mettre en œuvre leinit(seed: [UInt8])
initialiseur, ainsi que les exigences pourRandomNumberGenerator
. Les valeurs retournées parnext()
doit former une séquence déterministe qui ne dépend que de la semence 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érentiables.
Utilisé par
BidirectionalRecurrentLayer
comme une 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
Un protocole représentant les types qui peuvent être mis en correspondance avec
Array<CTensorHandle>
.Ce protocole est défini séparément du
TensorGroup
pour que le nombre de tenseurs à déterminer lors 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 conformes tout au
TensorGroup
protocole. Il ne peut pas être dérivée automatiquement pour les structures dont les propriétés se conformer à toutesTensorArrayProtocol
en raison de l'exigence du constructeur ( à savoir, dans ce cas , il serait impossible de savoir comment brisercount
entre les propriétés stockées).Déclaration
public protocol TensorArrayProtocol
Un protocole représentant les types qui peuvent être mis en correspondance et de
Array<CTensorHandle>
.Quand un
TensorGroup
est utilisée comme argument pour une opération de tenseur, il est transmis comme une liste d'arguments dont les éléments sont les champs de tenseurs de type.Lorsqu'un
TensorGroup
est retourné à la suite d'une opération de tenseur, il est initialisé avec ses champs de tenseurs définis aux résultats du tenseur de l'opération tenseur.Déclaration
public protocol TensorGroup : TensorArrayProtocol
Un type de données pris en charge en x10.
Déclaration
public protocol XLAScalarType