I seguenti protocolli sono disponibili a livello globale.
Fornisce punti di personalizzazione per gli algoritmi
MutableCollection
.Se incorporati nella libreria standard, questi requisiti farebbero semplicemente parte di
MutableCollection
. Nel frattempo, puoi dichiarare la conformità di una raccolta aMutableCollectionAlgorithms
per ottenere che questi punti di personalizzazione vengano utilizzati 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 alcuni elementi di rango superiore dello stesso tipo (esempio: tensori, tupla di tensori)
Dichiarazione
public protocol Collatable
Un tipo le cui proprietà ed elementi nidificati possono essere copiati in 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.
I tipi conformi a
TensorFlowScalar
possono essere utilizzati come tipoScalar
associato diTensor
.Un tipo di dati intero che rappresenta tipi interi che possono essere utilizzati come indici tensoriali in TensorFlow.
Dichiarazione
public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
Un tipo di dati a virgola mobile conforme a
Differentiable
ed è compatibile con TensorFlow.Nota
Tensor
è conforme in modo condizionale aDifferentiable
quando il tipoScalar
associato è conforme 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
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à di prodotto che consiste in uno spazio vettoriale differenziabile e una varietà arbitraria, dove il fibrato tangente dell'intera varietà di prodotto è uguale alla componente dello spazio vettoriale.
Questa astrazione è utile per rappresentare strutture 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
Conformare un tipo aEuclideanDifferentiable
se è differenziabile solo rispetto alla sua componente di spazio vettoriale e quando il suoTangentVector
è uguale alla sua componente di spazio vettoriale.Dichiarazione
public protocol EuclideanDifferentiable : Differentiable
Dichiarazione
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
Uno strato di rete neurale.
I tipi conformi a
Layer
rappresentano funzioni che mappano gli input sugli output. Possono avere uno stato interno rappresentato da parametri, come i tensori del peso.Le istanze
Layer
definiscono un metodocallAsFunction(_:)
differenziabile per mappare gli input sugli output.Dichiarazione
public protocol Layer : Module where Self.Input : Differentiable
Uno strato di rete neurale senza parametri.
Il
TangentVector
dei layer senza parametri è sempreEmptyTangentVector
.Dichiarazione
public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
Un tipo che ha funzioni elementari disponibili.
Una “funzione elementare” è una funzione costruita da potenze, radici, esponenziali, logaritmi, funzioni trigonometriche (sin, cos, tan) e le loro inverse, e le funzioni iperboliche (sinh, cosh, tanh) e le loro inverse.
La conformità a questo protocollo significa che tutti questi elementi costitutivi sono disponibili come funzioni statiche sul tipo.
let x: Float = 1 let y = Float.sin(x) // 0.84147096
Dichiarazione
public protocol ElementaryFunctions
Un tipo le cui proprietà ed elementi del tensore a virgola mobile nidificati 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 secondo cui un tipo deve essere un'istanza di
Sampling
.Dichiarazione
public protocol SamplingProtocol : Collection
Un tipo che può essere inizializzato da un'istanza
numpy.ndarray
rappresentata comePythonObject
.Dichiarazione
public protocol ConvertibleFromNumpyArray
Un tipo compatibile bit a bit con uno o più tipi scalari NumPy.
Dichiarazione
public protocol NumpyScalarCompatible
Un tipo i cui valori possono essere convertiti in
PythonObject
.Dichiarazione
public protocol PythonConvertible
Un tipo che può essere inizializzato da un
PythonObject
.Dichiarazione
public protocol ConvertibleFromPython
Un tipo che fornisce dati pseudocasuali deterministici seminabili.
Un SeedableRandomNumberGenerator può essere utilizzato ovunque in cui verrebbe utilizzato un RandomNumberGenerator. È utile quando i dati pseudo-casuali devono essere riproducibili tra le esecuzioni.
Conforme al protocollo SeedableRandomNumberGenerator
Per rendere un tipo personalizzato conforme al protocollo
SeedableRandomNumberGenerator
, implementare l'inizializzatoreinit(seed: [UInt8])
, nonché i requisiti perRandomNumberGenerator
. I valori restituiti danext()
devono formare una sequenza deterministica che dipende solo dal seme fornito al momento dell'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 i tipi che possono essere mappati su
Array<CTensorHandle>
.Questo protocollo è definito separatamente da
TensorGroup
in modo che il numero di tensori venga determinato in fase di esecuzione. Ad esempio,[Tensor<Float>]
potrebbe avere un numero sconosciuto di elementi in fase di compilazione.Questo protocollo può essere derivato automaticamente per strutture le cui proprietà memorizzate sono tutte conformi al protocollo
TensorGroup
. Non può essere derivato automaticamente per strutture le cui proprietà sono tutte conformi aTensorArrayProtocol
a causa dei requisiti del costruttore (ovvero, in questi casi sarebbe impossibile sapere come suddividerecount
tra le proprietà archiviate).Dichiarazione
public protocol TensorArrayProtocol
Un protocollo che rappresenta i tipi che possono essere mappati da e verso
Array<CTensorHandle>
.Quando un
TensorGroup
viene utilizzato come argomento per un'operazione tensore, viene passato come un elenco di argomenti i cui elementi sono i campi tensoriali del tipo.Quando un
TensorGroup
viene restituito come risultato di un'operazione tensore, viene inizializzato con i relativi campi tensori impostati sui risultati tensoriali dell'operazione tensore.Dichiarazione
public protocol TensorGroup : TensorArrayProtocol
Un tipo di dati supportato in x10.
Dichiarazione
public protocol XLAScalarType