Les structures suivantes sont disponibles dans le monde entier.
Une concaténation de deux séquences avec le même type d'élément.
Déclaration
public struct Concatenation<Base1: Sequence, Base2: Sequence>: Sequence where Base1.Element == Base2.Element
extension Concatenation: Collection where Base1: Collection, Base2: Collection
extension Concatenation: BidirectionalCollection where Base1: BidirectionalCollection, Base2: BidirectionalCollection
extension Concatenation: RandomAccessCollection where Base1: RandomAccessCollection, Base2: RandomAccessCollection
Une vue pivotée sur une collection.
Déclaration
public struct RotatedCollection<Base> : Collection where Base : Collection
extension RotatedCollection: BidirectionalCollection where Base: BidirectionalCollection
extension RotatedCollection: RandomAccessCollection where Base: RandomAccessCollection
Déclaration
public struct AnyDifferentiable : Differentiable
Une valeur dérivée effacée par type.
Le type
AnyDerivative
transmet ses opérations à une valeur dérivée de base sous-jacente arbitraire conforme àDifferentiable
etAdditiveArithmetic
, masquant les spécificités de la valeur sous-jacente.Déclaration
@frozen public struct AnyDerivative : Differentiable & AdditiveArithmetic
Tableau multidimensionnel d'éléments qui est une généralisation de vecteurs et de matrices à des dimensions potentiellement supérieures.
Le paramètre générique
Scalar
décrit le type de scalaires dans le tenseur (tels queInt32
,Float
, etc.).Déclaration
@frozen public struct Tensor<Scalar> where Scalar : TensorFlowScalar
extension Tensor: Collatable
extension Tensor: CopyableToDevice
extension Tensor: AnyTensor
extension Tensor: ExpressibleByArrayLiteral
extension Tensor: CustomStringConvertible
extension Tensor: CustomPlaygroundDisplayConvertible
extension Tensor: CustomReflectable
extension Tensor: TensorProtocol
extension Tensor: TensorGroup
extension Tensor: ElementaryFunctions where Scalar: TensorFlowFloatingPoint
extension Tensor: VectorProtocol where Scalar: TensorFlowFloatingPoint
extension Tensor: Mergeable where Scalar: TensorFlowFloatingPoint
extension Tensor: Equatable where Scalar: Equatable
extension Tensor: Codable where Scalar: Codable
extension Tensor: AdditiveArithmetic where Scalar: Numeric
extension Tensor: PointwiseMultiplicative where Scalar: Numeric
extension Tensor: Differentiable & EuclideanDifferentiable where Scalar: TensorFlowFloatingPoint
extension Tensor: DifferentiableTensorProtocol where Scalar: TensorFlowFloatingPoint
Une fonction de pullback qui effectue la transposition de la diffusion de deux
Tensors
.Déclaration
public struct BroadcastingPullback
Un contexte qui stocke les informations contextuelles locales du thread utilisées par les API d'apprentissage en profondeur telles que les couches.
Utilisez
Context.local
pour récupérer le contexte local du thread actuel.Exemples :
- Définissez la phase d'apprentissage actuelle sur la formation afin que des couches telles que
BatchNorm
calculent la moyenne et la variance lorsqu'elles sont appliquées aux entrées.
Context.local.learningPhase = .training
- Définissez la phase d'apprentissage actuelle sur l'inférence afin que les couches telles que
Dropout
ne suppriment pas les unités lorsqu'elles sont appliquées aux entrées.
Context.local.learningPhase = .inference
Déclaration
public struct Context
- Définissez la phase d'apprentissage actuelle sur la formation afin que des couches telles que
Une couche de convolution 1D (par exemple, convolution temporelle sur une série temporelle).
Cette couche crée un filtre de convolution qui est convolué avec l'entrée de la couche pour produire un tenseur de sorties.
Déclaration
@frozen public struct Conv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche de convolution 2D (par exemple convolution spatiale sur les images).
Cette couche crée un filtre de convolution qui est convolué avec l'entrée de la couche pour produire un tenseur de sorties.
Déclaration
@frozen public struct Conv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche de convolution 3D pour la convolution spatiale/spatio-temporelle sur les images.
Cette couche crée un filtre de convolution qui est convolué avec l'entrée de la couche pour produire un tenseur de sorties.
Déclaration
@frozen public struct Conv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche de convolution transposée 1D (par exemple, convolution temporelle transposée sur les images).
Cette couche crée un filtre de convolution qui est transposé-convolué avec l'entrée de la couche pour produire un tenseur de sorties.
Déclaration
@frozen public struct TransposedConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche de convolution transposée 2D (par exemple, convolution spatiale transposée sur les images).
Cette couche crée un filtre de convolution qui est transposé-convolué avec l'entrée de la couche pour produire un tenseur de sorties.
Déclaration
@frozen public struct TransposedConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche de convolution transposée en 3D (par exemple, convolution spatiale transposée sur des images).
Cette couche crée un filtre de convolution qui est transposé-convolué avec l'entrée de la couche pour produire un tenseur de sorties.
Déclaration
@frozen public struct TransposedConv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche de convolution 2D en profondeur.
Cette couche crée des filtres de convolution séparables qui sont convolués avec l'entrée de la couche pour produire un tenseur de sorties.
Déclaration
@frozen public struct DepthwiseConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Un calque pour ajouter un remplissage nul dans la dimension temporelle.
Déclaration
public struct ZeroPadding1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un calque pour ajouter un remplissage nul dans les dimensions spatiales.
Déclaration
public struct ZeroPadding2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un calque pour ajouter un remplissage nul dans les dimensions spatiales/spatio-temporelles.
Déclaration
public struct ZeroPadding3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de convolution séparable 1D.
Cette couche effectue une convolution en profondeur qui agit séparément sur les canaux, suivie d'une convolution ponctuelle qui mélange les canaux.
Déclaration
@frozen public struct SeparableConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche de convolution séparable 2D.
Cette couche effectue une convolution en profondeur qui agit séparément sur les canaux, suivie d'une convolution ponctuelle qui mélange les canaux.
Déclaration
@frozen public struct SeparableConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche aplatie.
Un calque d'aplatissement aplatit l'entrée lorsqu'il est appliqué sans affecter la taille du lot.
Déclaration
@frozen public struct Flatten<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un calque de remodelage.
Déclaration
@frozen public struct Reshape<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche qui contient une fonction différenciable personnalisée.
Déclaration
public struct Function<Input, Output> : ParameterlessLayer where Input : Differentiable, Output : Differentiable
Valeur de type dynamique TensorFlow qui peut être créée à partir de types conformes à
TensorFlowScalar
.Déclaration
public struct TensorDataType : Equatable
Déclaration
Représente un ensemble potentiellement important d’éléments.
Un
Dataset
peut être utilisé pour représenter un pipeline d'entrée sous la forme d'une collection de tenseurs d'éléments.Déclaration
@available(*, deprecated, message: "Datasets will be removed in S4TF v0.10. Please use the new Batches API instead.") @frozen public struct Dataset<Element> where Element : TensorGroup
extension Dataset: Sequence
Type qui permet l'itération sur les éléments d'un ensemble de données.
Déclaration
@available(*, deprecated) @frozen public struct DatasetIterator<Element> where Element : TensorGroup
extension DatasetIterator: IteratorProtocol
Une structure de type 2 tuples conforme à TensorGroup qui représente un tuple de 2 types conformes à
TensorGroup
.Déclaration
@frozen public struct Zip2TensorGroup<T, U> : TensorGroup where T : TensorGroup, U : TensorGroup
Une couche de réseau neuronal densément connectée.
Dense
implémente l'opérationactivation(matmul(input, weight) + bias)
, oùweight
est une matrice de poids,bias
est un vecteur de biais etactivation
est une fonction d'activation par élément.Cette couche prend également en charge les tenseurs de poids 3D avec des matrices de biais 2D. Dans ce cas, la première dimension des deux est traitée comme la taille du lot qui est alignée avec la première dimension d'
input
et la variante par lots de l'opérationmatmul(_:_:)
est utilisée, utilisant ainsi un poids et un biais différents pour chaque élément. dans le lot d'entrée.Déclaration
@frozen public struct Dense<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Un appareil sur lequel
Tensor
peuvent être alloués.Déclaration
public struct Device
extension Device: Equatable
extension Device: CustomStringConvertible
Une couche d'abandon.
L'abandon consiste à mettre aléatoirement à
0
une fraction d'unités d'entrée à chaque mise à jour pendant le temps d'entraînement, ce qui permet d'éviter le surapprentissage.Déclaration
@frozen public struct Dropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianNoise
ajoute du bruit échantillonné à partir d'une distribution normale.Le bruit ajouté a toujours une moyenne nulle, mais un écart type configurable.
Déclaration
public struct GaussianNoise<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianDropout
multiplie l'entrée avec le bruit échantillonné à partir d'une distribution normale de moyenne 1,0.Puisqu’il s’agit d’une couche de régularisation, elle n’est active que pendant la période d’entraînement. Pendant l'inférence,
GaussianDropout
traverse l'entrée sans modification.Déclaration
public struct GaussianDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de suppression Alpha.
Alpha Dropout est un
Dropout
qui maintient la moyenne et la variance des entrées à leurs valeurs d'origine, afin de garantir la propriété d'auto-normalisation même après cet abandon. Alpha Dropout s'adapte bien aux unités linéaires exponentielles mises à l'échelle en définissant de manière aléatoire les activations sur la valeur de saturation négative.Source : Réseaux de neurones auto-normalisés : https://arxiv.org/abs/1706.02515
Déclaration
@frozen public struct AlphaDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche d'intégration.
Embedding
est en fait une table de recherche qui mappe les indices d'un vocabulaire fixe à des représentations vectorielles de taille fixe (dense), par exemple[[0], [3]] -> [[0.25, 0.1], [0.6, -0.2]]
.Déclaration
public struct Embedding<Scalar> : Module where Scalar : TensorFlowFloatingPoint
Une structure vide représentant des
TangentVector
vides pour les couches sans paramètre.Déclaration
public struct EmptyTangentVector: EuclideanDifferentiable, VectorProtocol, ElementaryFunctions, PointwiseMultiplicative, KeyPathIterable
Paire de premier et deuxième moments (c'est-à-dire moyenne et variance).
Note
Ceci est nécessaire car les types de tuples ne sont pas différenciables.Déclaration
public struct Moments<Scalar> : Differentiable where Scalar : TensorFlowFloatingPoint
Une couche de dilatation morphologique 2D
Cette couche renvoie la dilatation morphologique du tenseur d'entrée avec les filtres fournis
Déclaration
@frozen public struct Dilation2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche d'érosion morphologique 2D
Cette couche renvoie l'érosion morphologique du tenseur d'entrée avec les filtres fournis
Déclaration
@frozen public struct Erosion2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une sélection paresseuse d'éléments, dans un ordre donné, à partir d'une collection de base.
Déclaration
public struct Sampling<Base: Collection, Selection: Collection> where Selection.Element == Base.Index
extension Sampling: SamplingProtocol
extension Sampling: Collection
extension Sampling: BidirectionalCollection where Selection: BidirectionalCollection
extension Sampling: RandomAccessCollection where Selection: RandomAccessCollection
Une collection des tranches contiguës non chevauchantes les plus longues d'une collection
Base
, en commençant par son premier élément et ayant une longueur maximale fixe.Les éléments de cette collection, à l'exception du dernier, ont tous un
count
debatchSize
, sauf siBase.count % batchSize !=0
, auquel cas lecount
du dernier lot estbase.count % batchSize.
Déclaration
public struct Slices<Base> where Base : Collection
extension Slices: Collection
Une couche de normalisation par lots.
Normalise les activations de la couche précédente à chaque lot, c'est à dire applique une transformation qui maintient l'activation moyenne proche de
0
et l'écart type d'activation proche de1
.Référence : Normalisation par lots : accélérer la formation approfondie du réseau en réduisant le décalage des covariables internes .
Déclaration
@frozen public struct BatchNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche qui applique la normalisation des couches sur un mini-lot d'entrées.
Référence : Normalisation des couches .
Déclaration
@frozen public struct LayerNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche qui applique la normalisation de groupe sur un mini-lot d'entrées.
Référence : Normalisation de groupe .
Déclaration
@frozen public struct GroupNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Une couche qui applique la normalisation d'instance sur un mini-lot d'entrées.
Référence : Normalisation d'instance : l'ingrédient manquant pour une stylisation rapide .
Déclaration
@frozen public struct InstanceNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
État pour une seule étape d'un seul poids à l'intérieur d'un optimiseur.
Déclaration
public struct OptimizerWeightStepState
État global accessible via
StateAccessor
.Déclaration
public struct OptimizerState
[String: Float]
mais les éléments sont accessibles comme s'ils étaient membres.Déclaration
@dynamicMemberLookup public struct HyperparameterDictionary
Un optimiseur qui fonctionne sur un seul groupe de paramètres.
Déclaration
public struct ParameterGroupOptimizer
Un wrapper de type sécurisé autour d’une valeur d’index
Int
pour les valeurs locales de l’optimiseur.Déclaration
public struct LocalAccessor
Un wrapper de type sécurisé autour d’une valeur d’index
Int
pour les valeurs globales de l’optimiseur.Déclaration
public struct GlobalAccessor
Un wrapper de type sécurisé autour d’une valeur d’index
Int
pour les valeurs d’état de l’optimiseur.Déclaration
public struct StateAccessor
Construit un
ParameterGroupOptimizer
. Ceci est utilisé essentiellement au niveau d’un poids unique dans le modèle. Un mappage des groupes de paramètres sélectionnés par ([Bool]
vers ParameterGroupOptimizer) définit l'optimiseur final.Déclaration
public struct ParameterGroupOptimizerBuilder
Une couche de pooling maximale pour les données temporelles.
Déclaration
@frozen public struct MaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de pooling maximale pour les données spatiales.
Déclaration
@frozen public struct MaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de pooling maximale pour les données spatiales ou spatio-temporelles.
Déclaration
@frozen public struct MaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de pooling moyenne pour les données temporelles.
Déclaration
@frozen public struct AvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de regroupement moyenne pour les données spatiales.
Déclaration
@frozen public struct AvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de pooling moyenne pour les données spatiales ou spatio-temporelles.
Déclaration
@frozen public struct AvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de regroupement moyenne globale pour les données temporelles.
Déclaration
@frozen public struct GlobalAvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de regroupement moyenne globale pour les données spatiales.
Déclaration
@frozen public struct GlobalAvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de mise en commun moyenne globale pour les données spatiales et spatio-temporelles.
Déclaration
@frozen public struct GlobalAvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de pooling maximale globale pour les données temporelles.
Déclaration
@frozen public struct GlobalMaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de pooling maximale globale pour les données spatiales.
Déclaration
@frozen public struct GlobalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de pooling maximale globale pour les données spatiales et spatio-temporelles.
Déclaration
@frozen public struct GlobalMaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de pooling maximale fractionnée pour les données spatiales. Remarque :
FractionalMaxPool
n'a pas d'implémentation XLA et peut donc avoir des implications en termes de performances.Déclaration
@frozen public struct FractionalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
PythonObject
représente un objet en Python et prend en charge la recherche dynamique de membres. Tout accès membre commeobject.foo
demandera dynamiquement le runtime Python pour un membre portant le nom spécifié dans cet objet.PythonObject
est transmis et renvoyé par tous les appels de fonction Python et références de membres. Il prend en charge les opérateurs arithmétiques et de comparaison Python standard.En interne,
PythonObject
est implémenté en tant que pointeur à références vers une API Python CPyObject
.Déclaration
@dynamicCallable @dynamicMemberLookup public struct PythonObject
extension PythonObject : CustomStringConvertible
extension PythonObject : CustomPlaygroundDisplayConvertible
extension PythonObject : CustomReflectable
extension PythonObject : PythonConvertible, ConvertibleFromPython
extension PythonObject : SignedNumeric
extension PythonObject : Strideable
extension PythonObject : Equatable, Comparable
extension PythonObject : Hashable
extension PythonObject : MutableCollection
extension PythonObject : Sequence
extension PythonObject : ExpressibleByBooleanLiteral, ExpressibleByIntegerLiteral, ExpressibleByFloatLiteral, ExpressibleByStringLiteral
extension PythonObject : ExpressibleByArrayLiteral, ExpressibleByDictionaryLiteral
Un wrapper
PythonObject
qui permet de lancer des appels de méthode. Les exceptions produites par les fonctions Python sont reflétées sous forme d'erreurs Swift et levées.Note
Il est intentionnel queThrowingPythonObject
n'ait pas l'attribut@dynamicCallable
car la syntaxe d'appel n'est pas intuitive :x.throwing(arg1, arg2, ...)
. Les méthodes seront toujours nomméesdynamicallyCall
jusqu'à discussion/conception ultérieure.Déclaration
public struct ThrowingPythonObject
Un wrapper
PythonObject
qui permet les accès aux membres. Les opérations d’accès aux membres renvoient un résultatOptional
. Lorsque l’accès des membres échoue,nil
est renvoyé.Déclaration
@dynamicMemberLookup public struct CheckingPythonObject
Une interface pour Python.
PythonInterface
permet l'interaction avec Python. Il peut être utilisé pour importer des modules et accéder dynamiquement aux types et fonctions intégrés de Python.Note
Il n’est pas prévu quePythonInterface
soit initialisé directement. Veuillez plutôt utiliser l'instance globale dePythonInterface
appeléePython
.Déclaration
@dynamicMemberLookup public struct PythonInterface
Déclaration
public struct PythonLibrary
Un générateur de nombres aléatoires effacés par type.
Le type
AnyRandomNumberGenerator
transmet les opérations de génération de nombres aléatoires à un générateur de nombres aléatoires sous-jacent, masquant son type sous-jacent spécifique.Déclaration
public struct AnyRandomNumberGenerator : RandomNumberGenerator
Une implémentation de
SeedableRandomNumberGenerator
utilisant ARC4.ARC4 est un chiffrement de flux qui génère un flux d'octets pseudo-aléatoire. Ce PRNG utilise la graine comme clé.
ARC4 est décrit dans Schneier, B., « Applied Cryptography : Protocols, Algorithms, and Source Code in C », 2e édition, 1996.
Un générateur individuel n'est pas thread-safe, mais des générateurs distincts ne partagent pas d'état. Les données aléatoires générées sont de haute qualité, mais ne conviennent pas aux applications cryptographiques.
Déclaration
@frozen public struct ARC4RandomNumberGenerator : SeedableRandomNumberGenerator
Une implémentation de
SeedableRandomNumberGenerator
utilisant Threefry. Saumon et coll. SC 2011. Nombres aléatoires parallèles : aussi simple que 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfCette structure implémente un PRNG Threefry2x32 de 20 tours. Il doit être initialisé avec une valeur de 64 bits.
Un générateur individuel n'est pas thread-safe, mais des générateurs distincts ne partagent pas d'état. Les données aléatoires générées sont de haute qualité, mais ne conviennent pas aux applications cryptographiques.
Déclaration
public struct ThreefryRandomNumberGenerator : SeedableRandomNumberGenerator
Une implémentation de
SeedableRandomNumberGenerator
utilisant Philox. Saumon et coll. SC 2011. Nombres aléatoires parallèles : aussi simple que 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfCette structure implémente un PRNG Philox4x32 à 10 tours. Il doit être initialisé avec une valeur de 64 bits.
Un générateur individuel n'est pas thread-safe, mais des générateurs distincts ne partagent pas d'état. Les données aléatoires générées sont de haute qualité, mais ne conviennent pas aux applications cryptographiques.
Déclaration
public struct PhiloxRandomNumberGenerator : SeedableRandomNumberGenerator
Déclaration
@frozen public struct UniformIntegerDistribution<T> : RandomDistribution where T : FixedWidthInteger
Déclaration
@frozen public struct UniformFloatingPointDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Déclaration
@frozen public struct NormalDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Déclaration
@frozen public struct BetaDistribution : RandomDistribution
Une entrée dans un réseau neuronal récurrent.
Déclaration
public struct RNNCellInput<Input, State> : Differentiable where Input : Differentiable, State : Differentiable
extension RNNCellInput: EuclideanDifferentiable where Input: EuclideanDifferentiable, State: EuclideanDifferentiable
Une sortie vers un réseau neuronal récurrent.
Déclaration
public struct RNNCellOutput<Output, State> : Differentiable where Output : Differentiable, State : Differentiable
extension RNNCellOutput: EuclideanDifferentiable where Output: EuclideanDifferentiable, State: EuclideanDifferentiable
Une cellule RNN de base.
Déclaration
public struct BasicRNNCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Une cellule LSTM.
Déclaration
public struct LSTMCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Une cellule GRU.
Déclaration
public struct GRUCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Déclaration
public struct RecurrentLayer<Cell> : Layer where Cell : RecurrentLayerCell
extension RecurrentLayer: Equatable where Cell: Equatable
extension RecurrentLayer: AdditiveArithmetic where Cell: AdditiveArithmetic
Déclaration
public struct BidirectionalRecurrentLayer<Cell: RecurrentLayerCell>: Layer where Cell.TimeStepOutput: Mergeable
Un calque qui compose séquentiellement deux ou plusieurs autres calques.
Exemples :
- Créez un modèle de perceptron simple à 2 couches pour MNIST :
let inputSize = 28 * 28 let hiddenSize = 300 var classifier = Sequential { Dense<Float>(inputSize: inputSize, outputSize: hiddenSize, activation: relu) Dense<Float>(inputSize: hiddenSize, outputSize: 3, activation: identity) }
- Créez un encodeur automatique pour MNIST :
var autoencoder = Sequential { // The encoder. Dense<Float>(inputSize: 28 * 28, outputSize: 128, activation: relu) Dense<Float>(inputSize: 128, outputSize: 64, activation: relu) Dense<Float>(inputSize: 64, outputSize: 12, activation: relu) Dense<Float>(inputSize: 12, outputSize: 3, activation: relu) // The decoder. Dense<Float>(inputSize: 3, outputSize: 12, activation: relu) Dense<Float>(inputSize: 12, outputSize: 64, activation: relu) Dense<Float>(inputSize: 64, outputSize: 128, activation: relu) Dense<Float>(inputSize: 128, outputSize: imageHeight * imageWidth, activation: tanh) }
Déclaration
@_functionBuilder public struct LayerBuilder
ShapedArray
est un tableau multidimensionnel. Il a une forme, qui est de type[Int]
et définit les dimensions du tableau, et utilise unTensorBuffer
en interne comme stockage.Déclaration
@frozen public struct ShapedArray<Scalar> : _ShapedArrayProtocol
extension ShapedArray: RandomAccessCollection, MutableCollection
extension ShapedArray: CustomStringConvertible
extension ShapedArray: CustomPlaygroundDisplayConvertible
extension ShapedArray: CustomReflectable
extension ShapedArray: ExpressibleByArrayLiteral where Scalar: TensorFlowScalar
extension ShapedArray: Equatable where Scalar: Equatable
extension ShapedArray: Hashable where Scalar: Hashable
extension ShapedArray: Codable where Scalar: Codable
Tranche contiguë d'une instance
ShapedArray
ouShapedArraySlice
.ShapedArraySlice
permet des opérations rapides et efficaces sur des tranches contiguës d'instancesShapedArray
. Les instancesShapedArraySlice
ne disposent pas de leur propre stockage. Au lieu de cela, ils fournissent une vue sur le stockage de leurShapedArray
de base.ShapedArraySlice
peut représenter deux types différents de tranches : les tableaux d'éléments et les sous-tableaux.Les tableaux d'éléments sont des éléments sous-dimensionnels d'un
ShapedArray
: leur rang est inférieur d'un à celui de leur base. Les tranches de tableau d'éléments sont obtenues en indexant une instanceShapedArray
avec un indexInt32
singulier.Par exemple:
var matrix = ShapedArray(shape: [2, 2], scalars: [0, 1, 2, 3]) // `matrix` represents [[0, 1], [2, 3]]. let element = matrix[0] // `element` is a `ShapedArraySlice` with shape [2]. It is an element // array, specifically the first element in `matrix`: [0, 1]. matrix[1] = ShapedArraySlice(shape: [2], scalars: [4, 8]) // The second element in `matrix` has been mutated. // `matrix` now represents [[0, 1, 4, 8]].
Les sous-tableaux sont une plage contiguë d'éléments dans un
ShapedArray
. Le rang d'un sous-tableau est le même que celui de sa base, mais sa dimension principale est le nombre de tranches. Les tranches de sous-tableau sont obtenues en indexant unShapedArray
avec unRange<Int32>
qui représente une plage d'éléments (dans la dimension principale). Des méthodes telles queprefix(:)
etsuffix(:)
qui indexent en interne avec une plage produisent également un sous-tableau.Par exemple:
let zeros = ShapedArray(repeating: 0, shape: [3, 2]) var matrix = ShapedArray(shape: [3, 2], scalars: Array(0..<6)) // `zeros` represents [[0, 0], [0, 0], [0, 0]]. // `matrix` represents [[0, 1], [2, 3], [4, 5]]. let subarray = matrix.prefix(2) // `subarray` is a `ShapedArraySlice` with shape [2, 2]. It is a slice // of the first 2 elements in `matrix` and represents [[0, 1], [2, 3]]. matrix[0..<2] = zeros.prefix(2) // The first 2 elements in `matrix` have been mutated. // `matrix` now represents [[0, 0], [0, 0], [4, 5]].
Déclaration
@frozen public struct ShapedArraySlice<Scalar> : _ShapedArrayProtocol
extension ShapedArraySlice: RandomAccessCollection, MutableCollection
extension ShapedArraySlice: CustomStringConvertible
extension ShapedArraySlice: CustomPlaygroundDisplayConvertible
extension ShapedArraySlice: CustomReflectable
extension ShapedArraySlice: ExpressibleByArrayLiteral where Scalar: TensorFlowScalar
extension ShapedArraySlice: Equatable where Scalar: Equatable
extension ShapedArraySlice: Hashable where Scalar: Hashable
extension ShapedArraySlice: Codable where Scalar: Codable
StringTensor
est un tableau multidimensionnel dont les éléments sont desString
.Déclaration
@frozen public struct StringTensor
extension StringTensor: TensorGroup
TensorHandle
est le type utilisé par les opérations. Il inclut un typeScalar
, que les internes du compilateur peuvent utiliser pour déterminer les types de données des paramètres lorsqu'ils sont extraits dans un programme tensoriel.Déclaration
public struct TensorHandle<Scalar> where Scalar : _TensorFlowDataTypeCompatible
extension TensorHandle: TensorGroup
Déclaration
public struct ResourceHandle
extension ResourceHandle: TensorGroup
Déclaration
public struct VariantHandle
extension VariantHandle: TensorGroup
Une structure représentant la forme d'un tenseur.
TensorShape
est une fine enveloppe autour d'un tableau d'entiers qui représentent les dimensions de la forme. Tous les types de tenseurs utilisentTensorShape
pour représenter leur forme.Déclaration
@frozen public struct TensorShape : ExpressibleByArrayLiteral
extension TensorShape: Collection, MutableCollection
extension TensorShape: RandomAccessCollection
extension TensorShape: RangeReplaceableCollection
extension TensorShape: Equatable
extension TensorShape: Codable
extension TensorShape: CustomStringConvertible
TensorVisitorPlan se rapproche de
[WritableKeyPath<Base, Tensor<Float>]
mais est plus efficace. Ceci est utile pour écrire des optimiseurs génériques qui souhaitent cartographier les gradients, les poids existants et un index qui peut être utilisé pour trouver des poids stockés auxiliairement. C'est légèrement plus efficace (~ 2x) mais cela pourrait être mieux car cela échange des frais généraux légèrement plus élevés (déréférencement de pointeur supplémentaire) pour ne pas avoir à effectuer le travail O (deep_of_tree) requis avec une liste simple pour retrouver chaque KeyPath individuel.Déclaration
public struct TensorVisitorPlan<Base>
Une couche de suréchantillonnage pour les entrées 1D.
Déclaration
@frozen public struct UpSampling1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de suréchantillonnage pour les entrées 2D.
Déclaration
@frozen public struct UpSampling2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Une couche de suréchantillonnage pour les entrées 3D.
Déclaration
@frozen public struct UpSampling3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Collecte les compteurs de prédictions corrects et les totaux de pertes.
Déclaration
public struct HostStatistics