Le seguenti strutture sono disponibili a livello globale.
Una concatenazione di due sequenze con lo stesso tipo di elemento.
Dichiarazione
public struct Concatenation<Base1: Sequence, Base2: Sequence>: Sequence
where Base1.Element == Base2.Elementextension Concatenation: Collection where Base1: Collection, Base2: Collection
extension Concatenation: BidirectionalCollection
where Base1: BidirectionalCollection, Base2: BidirectionalCollectionextension Concatenation: RandomAccessCollection
where Base1: RandomAccessCollection, Base2: RandomAccessCollectionUna vista ruotata su una raccolta.
Dichiarazione
public struct RotatedCollection<Base> : Collection where Base : Collection
extension RotatedCollection: BidirectionalCollection
where Base: BidirectionalCollectionextension RotatedCollection: RandomAccessCollection
where Base: RandomAccessCollectionDichiarazione
public struct AnyDifferentiable : Differentiable
Un valore derivativo cancellato dal tipo.
Il tipo
AnyDerivative
inoltra le sue operazioni a un valore derivato di base sottostante arbitrario conforme aDifferentiable
eAdditiveArithmetic
, nascondendo le specifiche del valore sottostante.Dichiarazione
@frozen
public struct AnyDerivative : Differentiable & AdditiveArithmeticUn array multidimensionale di elementi che è una generalizzazione di vettori e matrici a dimensioni potenzialmente superiori.
Il parametro generico
Scalar
descrive il tipo di scalari nel tensore (comeInt32
,Float
, ecc.).Dichiarazione
@frozen
public struct Tensor<Scalar> where Scalar : TensorFlowScalarextension 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: TensorFlowFloatingPointUna funzione pullback che esegue la trasposizione della trasmissione di due
Tensors
.Dichiarazione
public struct BroadcastingPullback
Un contesto che archivia informazioni contestuali thread-local utilizzate dalle API di deep learning come i livelli.
Utilizzare
Context.local
per recuperare il contesto thread-locale corrente.Esempi:
- Imposta la fase di apprendimento corrente su training in modo che layer come
BatchNorm
calcolino la media e la varianza quando applicati agli input.
Context.local.learningPhase = .training
- Imposta la fase di apprendimento corrente sull'inferenza in modo che livelli come
Dropout
non eliminino unità quando applicati agli input.
Context.local.learningPhase = .inference
Dichiarazione
public struct Context
- Imposta la fase di apprendimento corrente su training in modo che layer come
Uno strato di convoluzione 1-D (ad esempio, convoluzione temporale su una serie temporale).
Questo livello crea un filtro di convoluzione che viene convoluto con l'input del livello per produrre un tensore di output.
Dichiarazione
@frozen
public struct Conv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUno strato di convoluzione 2D (ad esempio, convoluzione spaziale sulle immagini).
Questo livello crea un filtro di convoluzione che viene convoluto con l'input del livello per produrre un tensore di output.
Dichiarazione
@frozen
public struct Conv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUn livello di convoluzione 3D per la convoluzione spaziale/spazio-temporale sulle immagini.
Questo livello crea un filtro di convoluzione che viene convoluto con l'input del livello per produrre un tensore di output.
Dichiarazione
@frozen
public struct Conv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUno strato di convoluzione trasposto 1-D (ad esempio, una convoluzione temporale trasposta sulle immagini).
Questo livello crea un filtro di convoluzione che viene trasposto-convoluto con l'input del livello per produrre un tensore di output.
Dichiarazione
@frozen
public struct TransposedConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUno strato di convoluzione trasposto 2-D (ad esempio, convoluzione spaziale trasposta sulle immagini).
Questo livello crea un filtro di convoluzione che viene trasposto-convoluto con l'input del livello per produrre un tensore di output.
Dichiarazione
@frozen
public struct TransposedConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUno strato di convoluzione trasposto in 3D (ad esempio, convoluzione spaziale trasposta sulle immagini).
Questo livello crea un filtro di convoluzione che viene trasposto-convoluto con l'input del livello per produrre un tensore di output.
Dichiarazione
@frozen
public struct TransposedConv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUno strato di convoluzione in profondità 2D.
Questo livello crea filtri di convoluzione separabili che vengono convoluti con l'input del livello per produrre un tensore di output.
Dichiarazione
@frozen
public struct DepthwiseConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUn livello per aggiungere zero-padding nella dimensione temporale.
Dichiarazione
public struct ZeroPadding1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello per l'aggiunta di riempimento zero nelle dimensioni spaziali.
Dichiarazione
public struct ZeroPadding2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello per aggiungere zero-padding nelle dimensioni spaziali/spazio-temporali.
Dichiarazione
public struct ZeroPadding3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uno strato di convoluzione separabile 1-D.
Questo livello esegue una convoluzione in profondità che agisce separatamente sui canali seguita da una convoluzione puntuale che mescola i canali.
Dichiarazione
@frozen
public struct SeparableConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUno strato di convoluzione separabile 2D.
Questo livello esegue una convoluzione in profondità che agisce separatamente sui canali seguita da una convoluzione puntuale che mescola i canali.
Dichiarazione
@frozen
public struct SeparableConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUno strato appiattito.
Un livello di appiattimento appiattisce l'input quando applicato senza influire sulla dimensione del batch.
Dichiarazione
@frozen
public struct Flatten<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di rimodellamento.
Dichiarazione
@frozen
public struct Reshape<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello che racchiude una funzione differenziabile personalizzata.
Dichiarazione
public struct Function<Input, Output> : ParameterlessLayer where Input : Differentiable, Output : Differentiable
Un valore di tipo dinamico TensorFlow che può essere creato da tipi conformi a
TensorFlowScalar
.Dichiarazione
public struct TensorDataType : Equatable
Dichiarazione
Rappresenta un insieme di elementi potenzialmente ampio.
Un
Dataset
può essere utilizzato per rappresentare una pipeline di input come una raccolta di tensori di elementi.Dichiarazione
@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 : TensorGroupextension Dataset: Sequence
Il tipo che consente l'iterazione sugli elementi di un set di dati.
Dichiarazione
@available(*, deprecated)
@frozen
public struct DatasetIterator<Element> where Element : TensorGroupextension DatasetIterator: IteratorProtocol
Una struttura simile a 2 tuple conforme a TensorGroup che rappresenta una tupla di 2 tipi conformi a
TensorGroup
.Dichiarazione
@frozen
public struct Zip2TensorGroup<T, U> : TensorGroup where T : TensorGroup, U : TensorGroupUno strato di rete neurale densamente connesso.
Dense
implementa l'operazioneactivation(matmul(input, weight) + bias)
, doveweight
è una matrice di peso,bias
è un vettore di polarizzazione eactivation
è una funzione di attivazione per elemento.Questo livello supporta anche tensori di peso 3D con matrici di polarizzazione 2D. In questo caso la prima dimensione di entrambi viene trattata come la dimensione batch allineata con la prima dimensione
input
e viene utilizzata la variante batch dell'operazionematmul(_:_:)
, utilizzando quindi un peso e una distorsione diversi per ciascun elemento nel batch di input.Dichiarazione
@frozen
public struct Dense<Scalar> : Layer where Scalar : TensorFlowFloatingPointUn dispositivo su cui è possibile allocare
Tensor
.Dichiarazione
public struct Device
extension Device: Equatable
extension Device: CustomStringConvertible
Uno strato di abbandono.
Il dropout consiste nell'impostare casualmente una frazione di unità di input su
0
ad ogni aggiornamento durante il periodo di addestramento, il che aiuta a prevenire l'overfitting.Dichiarazione
@frozen
public struct Dropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointGaussianNoise
aggiunge rumore campionato da una distribuzione normale.Il rumore aggiunto ha sempre media zero, ma ha una deviazione standard configurabile.
Dichiarazione
public struct GaussianNoise<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianDropout
moltiplica l'input per il rumore campionato da una distribuzione normale con media 1,0.Poiché si tratta di un livello di regolarizzazione, è attivo solo durante il periodo di addestramento. Durante l'inferenza,
GaussianDropout
passa attraverso l'input senza modifiche.Dichiarazione
public struct GaussianDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uno strato di dropout Alpha.
Alpha Dropout è un
Dropout
che mantiene la media e la varianza degli input ai loro valori originali, al fine di garantire la proprietà autonormalizzante anche dopo questo dropout. Alpha Dropout si adatta bene alle unità lineari esponenziali scalate impostando casualmente le attivazioni sul valore di saturazione negativo.Fonte: Reti neurali autonormalizzanti: https://arxiv.org/abs/1706.02515
Dichiarazione
@frozen
public struct AlphaDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUno strato di incorporamento.
Embedding
è effettivamente una tabella di ricerca che mappa gli indici da un vocabolario fisso a rappresentazioni vettoriali (dense) di dimensione fissa, ad esempio[[0], [3]] -> [[0.25, 0.1], [0.6, -0.2]]
.Dichiarazione
public struct Embedding<Scalar> : Module where Scalar : TensorFlowFloatingPoint
Una struttura vuota che rappresenta
TangentVector
vuoti per layer senza parametri.Dichiarazione
public struct EmptyTangentVector: EuclideanDifferentiable, VectorProtocol, ElementaryFunctions,
PointwiseMultiplicative, KeyPathIterableCoppia di momenti primo e secondo (cioè media e varianza).
Nota
Ciò è necessario perché i tipi di tupla non sono differenziabili.Dichiarazione
public struct Moments<Scalar> : Differentiable where Scalar : TensorFlowFloatingPoint
Uno strato di dilatazione morfologica 2-D
Questo layer restituisce la dilatazione morfologica del tensore di input con i filtri forniti
Dichiarazione
@frozen
public struct Dilation2D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUno strato di erosione morfologica 2-D
Questo strato restituisce l'erosione morfologica del tensore di input con i filtri forniti
Dichiarazione
@frozen
public struct Erosion2D<Scalar> : Layer where Scalar : TensorFlowFloatingPointUna pigra selezione di elementi, in un dato ordine, da una collezione di base.
Dichiarazione
public struct Sampling<Base: Collection, Selection: Collection>
where Selection.Element == Base.Indexextension Sampling: SamplingProtocol
extension Sampling: Collection
extension Sampling: BidirectionalCollection
where Selection: BidirectionalCollectionextension Sampling: RandomAccessCollection
where Selection: RandomAccessCollectionUna raccolta delle sezioni contigue non sovrapposte più lunghe di una raccolta
Base
, a partire dal primo elemento e con una lunghezza massima fissa.Gli elementi di questa raccolta, tranne l'ultimo, hanno tutti un
count
dibatchSize
, a meno cheBase.count % batchSize !=0
, nel qual caso ilcount
dell'ultimo batch èbase.count % batchSize.
Dichiarazione
public struct Slices<Base> where Base : Collection
extension Slices: Collection
Un livello di normalizzazione batch.
Normalizza le attivazioni dello strato precedente ad ogni batch, ovvero applica una trasformazione che mantiene l'attivazione media vicina a
0
e la deviazione standard di attivazione vicina a1
.Riferimento: Normalizzazione batch: accelerazione dell'addestramento della rete profonda riducendo lo spostamento della covariata interna .
Dichiarazione
@frozen
public struct BatchNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPointUn livello che applica la normalizzazione del livello su un mini-batch di input.
Riferimento: Normalizzazione dei livelli .
Dichiarazione
@frozen
public struct LayerNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPointUn livello che applica la normalizzazione del gruppo su un mini-batch di input.
Riferimento: normalizzazione del gruppo .
Dichiarazione
@frozen
public struct GroupNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPointUn livello che applica la normalizzazione dell'istanza su un mini-batch di input.
Riferimento: Normalizzazione dell'istanza: l'ingrediente mancante per una stilizzazione rapida .
Dichiarazione
@frozen
public struct InstanceNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPointStato per un singolo passaggio di un singolo peso all'interno di un ottimizzatore.
Dichiarazione
public struct OptimizerWeightStepState
Stato globale a cui si accede tramite
StateAccessor
.Dichiarazione
public struct OptimizerState
[String: Float]
ma è possibile accedere agli elementi come se fossero membri.Dichiarazione
@dynamicMemberLookup
public struct HyperparameterDictionaryUn ottimizzatore che funziona su un singolo gruppo di parametri.
Dichiarazione
public struct ParameterGroupOptimizer
Un wrapper indipendente dai tipi attorno a un valore di indice
Int
per i valori locali dell'ottimizzatore.Dichiarazione
public struct LocalAccessor
Un wrapper indipendente dai tipi attorno a un valore di indice
Int
per i valori globali dell'ottimizzatore.Dichiarazione
public struct GlobalAccessor
Un wrapper indipendente dai tipi attorno a un valore di indice
Int
per i valori dello stato dell'ottimizzatore.Dichiarazione
public struct StateAccessor
Costruisce un
ParameterGroupOptimizer
. Questo viene utilizzato essenzialmente al livello di un singolo peso nel modello. Una mappatura dai gruppi di parametri selezionati da ([Bool]
a ParametroGroupOptimizer) definisce l'ottimizzatore finale.Dichiarazione
public struct ParameterGroupOptimizerBuilder
Un livello di pooling massimo per i dati temporali.
Dichiarazione
@frozen
public struct MaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling massimo per i dati spaziali.
Dichiarazione
@frozen
public struct MaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling massimo per dati spaziali o spazio-temporali.
Dichiarazione
@frozen
public struct MaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling medio per i dati temporali.
Dichiarazione
@frozen
public struct AvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling medio per i dati spaziali.
Dichiarazione
@frozen
public struct AvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling medio per dati spaziali o spazio-temporali.
Dichiarazione
@frozen
public struct AvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling medio globale per i dati temporali.
Dichiarazione
@frozen
public struct GlobalAvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling medio globale per i dati spaziali.
Dichiarazione
@frozen
public struct GlobalAvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling medio globale per dati spaziali e spazio-temporali.
Dichiarazione
@frozen
public struct GlobalAvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling massimo globale per i dati temporali.
Dichiarazione
@frozen
public struct GlobalMaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling massimo globale per i dati spaziali.
Dichiarazione
@frozen
public struct GlobalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling massimo globale per dati spaziali e spazio-temporali.
Dichiarazione
@frozen
public struct GlobalMaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUn livello di pooling massimo frazionario per i dati spaziali. Nota:
FractionalMaxPool
non dispone di un'implementazione XLA e pertanto potrebbe avere implicazioni sulle prestazioni.Dichiarazione
@frozen
public struct FractionalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointPythonObject
rappresenta un oggetto in Python e supporta la ricerca dinamica dei membri. Qualsiasi accesso membro comeobject.foo
richiederà dinamicamente il runtime Python per un membro con il nome specificato in questo oggetto.PythonObject
viene passato e restituito da tutte le chiamate di funzioni Python e i riferimenti ai membri. Supporta gli operatori aritmetici e di confronto Python standard.Internamente,
PythonObject
è implementato come puntatore con conteggio dei riferimenti a un'API Python CPyObject
.Dichiarazione
@dynamicCallable
@dynamicMemberLookup
public struct PythonObjectextension 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, ExpressibleByStringLiteralextension PythonObject : ExpressibleByArrayLiteral, ExpressibleByDictionaryLiteral
Un wrapper
PythonObject
che consente di lanciare chiamate al metodo. Le eccezioni prodotte dalle funzioni Python si riflettono come errori Swift e vengono lanciate.Nota
È intenzionale cheThrowingPythonObject
non abbia l'attributo@dynamicCallable
perché la sintassi della chiamata non è intuitiva:x.throwing(arg1, arg2, ...)
. I metodi verranno comunque denominatidynamicallyCall
fino a ulteriore discussione/progettazione.Dichiarazione
public struct ThrowingPythonObject
Un wrapper
PythonObject
che consente gli accessi ai membri. Le operazioni di accesso dei membri restituiscono un risultatoOptional
. Quando l'accesso dei membri fallisce, viene restituitonil
.Dichiarazione
@dynamicMemberLookup
public struct CheckingPythonObjectUn'interfaccia per Python.
PythonInterface
consente l'interazione con Python. Può essere utilizzato per importare moduli e accedere dinamicamente a tipi e funzioni integrati di Python.Nota
Non è previsto chePythonInterface
venga inizializzato direttamente. Utilizza invece l'istanza globale diPythonInterface
chiamataPython
.Dichiarazione
@dynamicMemberLookup
public struct PythonInterfaceDichiarazione
public struct PythonLibrary
Un generatore di numeri casuali cancellati dal tipo.
Il tipo
AnyRandomNumberGenerator
inoltra le operazioni di generazione di numeri casuali a un generatore di numeri casuali sottostante, nascondendone il tipo sottostante specifico.Dichiarazione
public struct AnyRandomNumberGenerator : RandomNumberGenerator
Un'implementazione di
SeedableRandomNumberGenerator
utilizzando ARC4.ARC4 è un codice a flusso che genera un flusso di byte pseudo-casuale. Questo PRNG utilizza il seme come chiave.
ARC4 è descritto in Schneier, B., “Applied Cryptography: Protocols, Algorithms, and Source Code in C”, 2a edizione, 1996.
Un singolo generatore non è thread-safe, ma i generatori distinti non condividono lo stato. I dati casuali generati sono di alta qualità, ma non sono adatti per applicazioni crittografiche.
Dichiarazione
@frozen
public struct ARC4RandomNumberGenerator : SeedableRandomNumberGeneratorUn'implementazione di
SeedableRandomNumberGenerator
utilizzando Threefry. Salmon et al. SC 2011. Numeri casuali paralleli: facili come 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfQuesta struttura implementa un PRNG Threefry2x32 da 20 round. Deve avere un valore a 64 bit.
Un singolo generatore non è thread-safe, ma i generatori distinti non condividono lo stato. I dati casuali generati sono di alta qualità, ma non sono adatti per applicazioni crittografiche.
Dichiarazione
public struct ThreefryRandomNumberGenerator : SeedableRandomNumberGenerator
Un'implementazione di
SeedableRandomNumberGenerator
utilizzando Philox. Salmon et al. SC 2011. Numeri casuali paralleli: facili come 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfQuesta struttura implementa un PRNG Philox4x32 da 10 round. Deve avere un valore a 64 bit.
Un singolo generatore non è thread-safe, ma i generatori distinti non condividono lo stato. I dati casuali generati sono di alta qualità, ma non sono adatti per applicazioni crittografiche.
Dichiarazione
public struct PhiloxRandomNumberGenerator : SeedableRandomNumberGenerator
Dichiarazione
@frozen
public struct UniformIntegerDistribution<T> : RandomDistribution where T : FixedWidthIntegerDichiarazione
@frozen
public struct UniformFloatingPointDistribution<T: BinaryFloatingPoint>: RandomDistribution
where T.RawSignificand: FixedWidthIntegerDichiarazione
@frozen
public struct NormalDistribution<T: BinaryFloatingPoint>: RandomDistribution
where T.RawSignificand: FixedWidthIntegerDichiarazione
@frozen
public struct BetaDistribution : RandomDistributionUn input per una rete neurale ricorrente.
Dichiarazione
public struct RNNCellInput<Input, State> : Differentiable where Input : Differentiable, State : Differentiable
extension RNNCellInput: EuclideanDifferentiable
where Input: EuclideanDifferentiable, State: EuclideanDifferentiableUn output verso una rete neurale ricorrente.
Dichiarazione
public struct RNNCellOutput<Output, State> : Differentiable where Output : Differentiable, State : Differentiable
extension RNNCellOutput: EuclideanDifferentiable
where Output: EuclideanDifferentiable, State: EuclideanDifferentiableUna cella RNN di base.
Dichiarazione
public struct BasicRNNCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Una cella LSTM.
Dichiarazione
public struct LSTMCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Una cellula GRU.
Dichiarazione
public struct GRUCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Dichiarazione
public struct RecurrentLayer<Cell> : Layer where Cell : RecurrentLayerCell
extension RecurrentLayer: Equatable where Cell: Equatable
extension RecurrentLayer: AdditiveArithmetic where Cell: AdditiveArithmetic
Dichiarazione
public struct BidirectionalRecurrentLayer<Cell: RecurrentLayerCell>: Layer
where Cell.TimeStepOutput: MergeableUno strato che compone in sequenza due o più altri strati.
Esempi:
- Costruisci un semplice modello di percettrone a 2 strati per 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)
}- Costruisci un codificatore automatico per 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)
}Dichiarazione
@_functionBuilder
public struct LayerBuilderShapedArray
è un array multidimensionale. Ha una forma, che è di tipo[Int]
e definisce le dimensioni dell'array e utilizza internamente unTensorBuffer
come memoria.Dichiarazione
@frozen
public struct ShapedArray<Scalar> : _ShapedArrayProtocolextension 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
Una sezione contigua di un'istanza
ShapedArray
oShapedArraySlice
.ShapedArraySlice
consente operazioni rapide ed efficienti su sezioni contigue di istanzeShapedArray
. Le istanzeShapedArraySlice
non hanno un proprio spazio di archiviazione. Invece, forniscono una vista sull'archiviazione del loroShapedArray
di base.ShapedArraySlice
può rappresentare due diversi tipi di sezioni: array di elementi e sottoarray.Gli array di elementi sono elementi subdimensionali di uno
ShapedArray
: il loro rango è uno in meno rispetto a quello della loro base. Le sezioni della matrice di elementi vengono ottenute indicizzando un'istanzaShapedArray
con un indiceInt32
singolare.Per esempio:
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]].I sottoarray sono un intervallo contiguo di elementi in un
ShapedArray
. Il rango di un sottoarray è lo stesso della sua base, ma la sua dimensione iniziale è il conteggio dell'intervallo delle fette. Le sezioni di sottoarray si ottengono indicizzando unShapedArray
con unRange<Int32>
che rappresenta un intervallo di elementi (nella dimensione principale). Anche metodi comeprefix(:)
esuffix(:)
che indicizzano internamente con un intervallo producono un sottoarray.Per esempio:
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]].Dichiarazione
@frozen
public struct ShapedArraySlice<Scalar> : _ShapedArrayProtocolextension 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
è un array multidimensionale i cui elementi sonoString
s.Dichiarazione
@frozen
public struct StringTensorextension StringTensor: TensorGroup
TensorHandle
è il tipo utilizzato da ops. Include un tipoScalar
, che gli interni del compilatore possono utilizzare per determinare i tipi di dati dei parametri quando vengono estratti in un programma tensore.Dichiarazione
public struct TensorHandle<Scalar> where Scalar : _TensorFlowDataTypeCompatible
extension TensorHandle: TensorGroup
Dichiarazione
public struct ResourceHandle
extension ResourceHandle: TensorGroup
Dichiarazione
public struct VariantHandle
extension VariantHandle: TensorGroup
Una struttura che rappresenta la forma di un tensore.
TensorShape
è un sottile involucro attorno a una serie di numeri interi che rappresentano le dimensioni della forma. Tutti i tipi di tensore utilizzanoTensorShape
per rappresentare la loro forma.Dichiarazione
@frozen
public struct TensorShape : ExpressibleByArrayLiteralextension TensorShape: Collection, MutableCollection
extension TensorShape: RandomAccessCollection
extension TensorShape: RangeReplaceableCollection
extension TensorShape: Equatable
extension TensorShape: Codable
extension TensorShape: CustomStringConvertible
TensorVisitorPlan si avvicina a
[WritableKeyPath<Base, Tensor<Float>]
ma è più efficiente. Ciò è utile per scrivere ottimizzatori generici che desiderano mappare i gradienti, i pesi esistenti e un indice che può essere utilizzato per trovare pesi memorizzati ausiliari. Questo è leggermente più efficiente (~2x) ma potrebbe essere migliore perché compensa spese generali leggermente più elevate (dereferenziazione extra del puntatore) per non dover eseguire il lavoro O (profondità_of_tree) richiesto con un elenco semplice per rintracciare ogni singolo KeyPath.Dichiarazione
public struct TensorVisitorPlan<Base>
Uno strato di sovracampionamento per ingressi 1-D.
Dichiarazione
@frozen
public struct UpSampling1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUno strato di sovracampionamento per ingressi 2-D.
Dichiarazione
@frozen
public struct UpSampling2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointUno strato di sovracampionamento per ingressi 3-D.
Dichiarazione
@frozen
public struct UpSampling3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPointRaccoglie i contatori di previsione corretti e i totali delle perdite.
Dichiarazione
public struct HostStatistics