I seguenti protocolli sono disponibili a livello globale.
Fornisce punti di personalizzazione per
MutableCollection
algoritmi.Se incorporato nella libreria standard, questi requisiti sarebbe solo parte di
MutableCollection
. Nel frattempo, è possibile dichiarare la conformità di una collezione perMutableCollectionAlgorithms
per ottenere questi punti di personalizzazione da utilizzare da altri algoritmi definiti suMutableCollectionAlgorithms
.Dichiarazione
public protocol MutableCollectionAlgorithms: MutableCollection where SubSequence: MutableCollectionAlgorithms
Dichiarazione
public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
Dichiarazione
public protocol TensorRangeExpression
Tipi i cui elementi possono essere raccolti in qualche elemento di rango superiore dello stesso tipo (esempio: tensori, tupla di tensori)
Dichiarazione
public protocol Collatable
Un tipo cui proprietà ed elementi nidificati possono essere copiati su un
Device
.Dichiarazione
public protocol CopyableToDevice : _CopyableToDevice
Un tipo i cui valori forniscono percorsi chiave personalizzati a proprietà o elementi.
Dichiarazione
public protocol KeyPathIterable : _KeyPathIterableBase
Un tipo di dati scalare compatibile con TensorFlow.
Tipi conformi a
TensorFlowScalar
possono essere utilizzati comeScalar
tipo associato diTensor
.Un tipo di dati intero che rappresenta i tipi interi che possono essere utilizzati come indici di tensore in TensorFlow.
Dichiarazione
public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
A dati a virgola mobile tipo conforme alla
Differentiable
ed è compatibile con tensorflow.Nota
Tensor
Conforme condizionatamenteDifferentiable
quando ilScalar
tipo soddisfa associati aTensorFlowFloatingPoint
.Dichiarazione
public protocol TensorFlowFloatingPoint: TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions where Self.RawSignificand: FixedWidthInteger, Self == Self.TangentVector
Un tipo che rappresenta matematicamente una varietà differenziabile i cui spazi tangenti sono di dimensione finita.
Dichiarazione
public protocol Differentiable
Un tipo con valori che supportano la moltiplicazione puntuale.
Dichiarazione
public protocol PointwiseMultiplicative : AdditiveArithmetic
Un tipo che rappresenta uno spazio vettoriale non classificato. I valori di questo tipo sono elementi in questo spazio vettoriale e non hanno forma o hanno una forma statica.
Dichiarazione
public protocol VectorProtocol : AdditiveArithmetic
Un tipo differenziabile nello spazio euclideo. Il tipo può rappresentare uno spazio vettoriale o consistere in uno spazio vettoriale e qualche altro componente non differenziabile.
Matematicamente, questo rappresenta una varietà prodotto che consiste in uno spazio vettoriale differenziabile e qualche varietà arbitraria, dove il fibrato tangente dell'intera varietà prodotto è uguale al componente dello spazio vettoriale.
Questa astrazione è utile per rappresentare strutture di dati differenziabili comuni che contengono sia proprietà vettoriali differenziabili che altre proprietà memorizzate che non hanno una derivata, ad es.
struct Perceptron: @memberwise EuclideanDifferentiable { var weight: SIMD16<Float> var bias: Float @noDerivative var useBias: Bool }
Nota
Conformarsi un tipo diEuclideanDifferentiable
se è derivabile solo rispetto alla sua componente spazio vettoriale e quando la suaTangentVector
è uguale alla sua componente spazio vettoriale.Dichiarazione
public protocol EuclideanDifferentiable : Differentiable
Dichiarazione
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
Uno strato di rete neurale.
Tipi conformi allo
Layer
rappresentano funzioni che gli ingressi alle uscite della mappa. Possono avere uno stato interno rappresentato da parametri, come i tensori di peso.Layer
istanze definiscono un differenziabilecallAsFunction(_:)
metodo per ingressi alle uscite mappatura.Dichiarazione
public protocol Layer : Module where Self.Input : Differentiable
Un livello di rete neurale senza parametri.
La
TangentVector
di strati senza parametri è sempreEmptyTangentVector
.Dichiarazione
public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
Un tipo che dispone di funzioni elementari disponibili.
Una “funzione elementare” è una funzione costruito dalle potenze, radici, esponenziali, logaritmi, funzioni trigonometriche (sin, cos, tan) e loro inverse, e le funzioni iperboliche (sinh, cosh, tanh) e loro inverse.
La conformità a questo protocollo significa che tutti questi blocchi costitutivi sono disponibili come funzioni statiche sul tipo.
let x: Float = 1 let y = Float.sin(x) // 0.84147096
Dichiarazione
public protocol ElementaryFunctions
Tipo le cui proprietà ed elementi del tensore a virgola mobile annidati possono essere convertiti da precisione completa a precisione ridotta e viceversa.
Un dettaglio di implementazione utilizzato per aggirare il fatto che Swift non può esprimere un vincolo generico che qualche tipo deve essere un'istanza di
Sampling
.Dichiarazione
public protocol SamplingProtocol : Collection
Un tipo che può essere inizializzato da un
numpy.ndarray
esempio rappresentato come unPythonObject
.Dichiarazione
public protocol ConvertibleFromNumpyArray
Un tipo compatibile bit per bit con uno o più tipi scalari NumPy.
Dichiarazione
public protocol NumpyScalarCompatible
Un tipo i cui valori possono essere convertiti in un
PythonObject
.Dichiarazione
public protocol PythonConvertible
Un tipo che può essere inizializzato da un
PythonObject
.Dichiarazione
public protocol ConvertibleFromPython
Un tipo che fornisce dati pseudo-casuali deterministici seedable.
Un SeedableRandomNumberGenerator può essere utilizzato ovunque venga utilizzato un RandomNumberGenerator. È utile quando i dati pseudo-casuali devono essere riproducibili tra le esecuzioni.
Conforme al protocollo SeedableRandomNumberGenerator
Per fare un tipo personalizzato conforme alla
SeedableRandomNumberGenerator
protocollo, l'attuazione delinit(seed: [UInt8])
inizializzatore, nonché i requisiti perRandomNumberGenerator
. I valori restituiti danext()
devono formare una sequenza deterministica che dipende solo dal seme fornito all'inizializzazione.Dichiarazione
public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
Dichiarazione
public protocol RandomDistribution
Una cella di livello ricorrente.
Dichiarazione
public protocol RecurrentLayerCell: Layer where Input == RNNCellInput<TimeStepInput, State>, Output == RNNCellOutput<TimeStepOutput, State>
Un tipo con valori che supportano operazioni binarie differenziabili.
Utilizzato da
BidirectionalRecurrentLayer
come requisito generico per le funzioni di unione.Dichiarazione
public protocol Mergeable : AdditiveArithmetic, Differentiable
Dichiarazione
public protocol TensorOperation
Dichiarazione
public protocol TFTensorOperation : TensorOperation
Protocollo speciale per chiamare operazioni tensorflow che accettano array eterogenei come input.
Dichiarazione
public protocol AnyTensor
Dichiarazione
public protocol TensorProtocol
Dichiarazione
public protocol DifferentiableTensorProtocol: TensorProtocol & Differentiable & EuclideanDifferentiable where Scalar: TensorFlowFloatingPoint
Un protocollo che rappresenta tipi che possono essere mappati a
Array<CTensorHandle>
.Questo protocollo è definito separatamente dal
TensorGroup
affinché il numero dei tensori da determinare in fase di esecuzione. Ad esempio,[Tensor<Float>]
può avere un numero imprecisato di elementi in fase di compilazione.Questo protocollo può essere derivata automaticamente struct cui proprietà memorizzato tutto conforme al
TensorGroup
protocollo. Non può essere derivata automaticamente per le strutture le cui proprietà sono tutti conformi alleTensorArrayProtocol
a causa del requisito costruttore (ad esempio, in questi casi, sarebbe impossibile sapere come abbatterecount
tra le proprietà memorizzate).Dichiarazione
public protocol TensorArrayProtocol
Un protocollo che rappresenta tipi che possono essere mappati da e
Array<CTensorHandle>
.Quando un
TensorGroup
viene utilizzata come argomento a un'operazione tensore, viene passato come una lista di argomenti cui elementi sono i campi tensoriali di tipo.Quando un
TensorGroup
viene restituito come risultato di un'operazione di tensore, viene inizializzato con i suoi campi tensori fissati ai risultati tensore del funzionamento tensore.Dichiarazione
public protocol TensorGroup : TensorArrayProtocol
Un tipo di dati supportato in x10.
Dichiarazione
public protocol XLAScalarType