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.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
Una vista ruotata su una raccolta.
Dichiarazione
public struct RotatedCollection<Base> : Collection where Base : Collection
extension RotatedCollection: BidirectionalCollection where Base: BidirectionalCollection
extension RotatedCollection: RandomAccessCollection where Base: RandomAccessCollection
Dichiarazione
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 & AdditiveArithmetic
Un 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 : 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
Una 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 : TensorFlowFloatingPoint
Uno 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 : TensorFlowFloatingPoint
Un 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 : TensorFlowFloatingPoint
Uno 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 : TensorFlowFloatingPoint
Uno 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 : TensorFlowFloatingPoint
Uno 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 : TensorFlowFloatingPoint
Uno 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 : TensorFlowFloatingPoint
Un 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 : TensorFlowFloatingPoint
Uno 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 : TensorFlowFloatingPoint
Uno 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 : TensorFlowFloatingPoint
Un livello di rimodellamento.
Dichiarazione
@frozen public struct Reshape<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un 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 : TensorGroup
extension 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 : TensorGroup
extension 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 : TensorGroup
Uno 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 : TensorFlowFloatingPoint
Un 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 : TensorFlowFloatingPoint
GaussianNoise
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 : TensorFlowFloatingPoint
Uno 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, KeyPathIterable
Coppia 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 : TensorFlowFloatingPoint
Uno 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 : TensorFlowFloatingPoint
Una 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.Index
extension Sampling: SamplingProtocol
extension Sampling: Collection
extension Sampling: BidirectionalCollection where Selection: BidirectionalCollection
extension Sampling: RandomAccessCollection where Selection: RandomAccessCollection
Una 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 : TensorFlowFloatingPoint
Un 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 : TensorFlowFloatingPoint
Un 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 : TensorFlowFloatingPoint
Un 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 : TensorFlowFloatingPoint
Stato 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 HyperparameterDictionary
Un 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 : TensorFlowFloatingPoint
Un livello di pooling massimo per i dati spaziali.
Dichiarazione
@frozen public struct MaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling massimo per dati spaziali o spazio-temporali.
Dichiarazione
@frozen public struct MaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling medio per i dati temporali.
Dichiarazione
@frozen public struct AvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling medio per i dati spaziali.
Dichiarazione
@frozen public struct AvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling medio per dati spaziali o spazio-temporali.
Dichiarazione
@frozen public struct AvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling medio globale per i dati temporali.
Dichiarazione
@frozen public struct GlobalAvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling medio globale per i dati spaziali.
Dichiarazione
@frozen public struct GlobalAvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling medio globale per dati spaziali e spazio-temporali.
Dichiarazione
@frozen public struct GlobalAvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling massimo globale per i dati temporali.
Dichiarazione
@frozen public struct GlobalMaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling massimo globale per i dati spaziali.
Dichiarazione
@frozen public struct GlobalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un livello di pooling massimo globale per dati spaziali e spazio-temporali.
Dichiarazione
@frozen public struct GlobalMaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Un 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 : TensorFlowFloatingPoint
PythonObject
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 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
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 CheckingPythonObject
Un'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 PythonInterface
Dichiarazione
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 : SeedableRandomNumberGenerator
Un'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 : FixedWidthInteger
Dichiarazione
@frozen public struct UniformFloatingPointDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Dichiarazione
@frozen public struct NormalDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Dichiarazione
@frozen public struct BetaDistribution : RandomDistribution
Un 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: EuclideanDifferentiable
Un 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: EuclideanDifferentiable
Una 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: Mergeable
Uno 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 LayerBuilder
ShapedArray
è 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> : _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
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> : _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
è un array multidimensionale i cui elementi sonoString
s.Dichiarazione
@frozen public struct StringTensor
extension 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 : ExpressibleByArrayLiteral
extension 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 : TensorFlowFloatingPoint
Uno strato di sovracampionamento per ingressi 2-D.
Dichiarazione
@frozen public struct UpSampling2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Uno strato di sovracampionamento per ingressi 3-D.
Dichiarazione
@frozen public struct UpSampling3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Raccoglie i contatori di previsione corretti e i totali delle perdite.
Dichiarazione
public struct HostStatistics