Die folgenden Protokolle sind global verfügbar.
Bietet Anpassungspunkte für
MutableCollection
Algorithmen.Wenn diese Anforderungen in die Standardbibliothek aufgenommen würden, wären sie nur Teil von
MutableCollection
. In der Zwischenzeit können Sie die Konformität einer Sammlung mitMutableCollectionAlgorithms
, damit diese Anpassungspunkte von anderen inMutableCollectionAlgorithms
definierten AlgorithmenMutableCollectionAlgorithms
.Erklärung
public protocol MutableCollectionAlgorithms: MutableCollection where SubSequence: MutableCollectionAlgorithms
Erklärung
public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
Erklärung
public protocol TensorRangeExpression
Typen, deren Elemente in einem höherrangigen Element desselben Typs zusammengefasst werden können (Beispiel: Tensoren, Tensor-Tupel)
Erklärung
public protocol Collatable
Ein Typ, dessen verschachtelte Eigenschaften und Elemente auf ein
Device
kopiert werden können.Erklärung
public protocol CopyableToDevice : _CopyableToDevice
Ein Typ, dessen Werte benutzerdefinierte Schlüsselpfade zu Eigenschaften oder Elementen bereitstellen.
Erklärung
public protocol KeyPathIterable : _KeyPathIterableBase
Ein skalarer Datentyp, der mit TensorFlow kompatibel ist.
Typen , die zu entsprechen
TensorFlowScalar
können als verwendet werdenScalar
zugehörige Art vonTensor
.Ein ganzzahliger Datentyp, der ganzzahlige Typen darstellt, die in TensorFlow als Tensorindizes verwendet werden können.
Erklärung
public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
Ein Gleitkomma-Datentyp, der
Differentiable
entspricht und mit TensorFlow kompatibel ist.Hinweis
Tensor
entspricht bedingtDifferentiable
wenn der mitScalar
verknüpfte TypTensorFlowFloatingPoint
entspricht.Erklärung
public protocol TensorFlowFloatingPoint: TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions where Self.RawSignificand: FixedWidthInteger, Self == Self.TangentVector
Ein Typ, der mathematisch eine differenzierbare Mannigfaltigkeit darstellt, deren Tangentenräume endlichdimensional sind.
Erklärung
public protocol Differentiable
Ein Typ mit Werten, die die punktweise Multiplikation unterstützen.
Erklärung
public protocol PointwiseMultiplicative : AdditiveArithmetic
Ein Typ, der einen Vektorraum ohne Rang darstellt. Werte dieses Typs sind Elemente in diesem Vektorraum und haben entweder keine Form oder eine statische Form.
Erklärung
public protocol VectorProtocol : AdditiveArithmetic
Ein Typ, der im euklidischen Raum differenzierbar ist. Der Typ kann einen Vektorraum darstellen oder aus einem Vektorraum und einer anderen nicht differenzierbaren Komponente bestehen.
Mathematisch stellt dies einen Produktverteiler dar, der aus einem differenzierbaren Vektorraum und einem beliebigen Verteiler besteht, wobei das Tangentenbündel des gesamten Produktverteilers gleich der Vektorraumkomponente ist.
Diese Abstraktion ist nützlich, um gemeinsame differenzierbare Datenstrukturen darzustellen, die sowohl differenzierbare Vektoreigenschaften als auch andere gespeicherte Eigenschaften enthalten, die keine Ableitung haben, z
struct Perceptron: @memberwise EuclideanDifferentiable { var weight: SIMD16<Float> var bias: Float @noDerivative var useBias: Bool }
Hinweis
Konformieren Sie einen Typ mitEuclideanDifferentiable
wenn er nur in Bezug auf seine VektorraumkomponenteTangentVector
ist und wenn seinTangentVector
gleich seiner Vektorraumkomponente ist.Erklärung
public protocol EuclideanDifferentiable : Differentiable
Erklärung
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
Eine neuronale Netzwerkschicht.
Layer
konforme Typen stellen Funktionen dar, die Eingaben auf Ausgaben abbilden. Sie können einen internen Zustand haben, der durch Parameter wie Gewichtstensoren dargestellt wird.Layer
definieren eine differenzierbarecallAsFunction(_:)
Verfahren zum Abbilden von Eingaben auf Ausgaben.Erklärung
public protocol Layer : Module where Self.Input : Differentiable
Eine parameterlose neuronale Netzwerkschicht.
Der
TangentVector
von parameterlosen Ebenen ist immerEmptyTangentVector
.Erklärung
public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
Ein Typ, für den Elementarfunktionen verfügbar sind.
Eine „Elementarfunktion“ ist eine Funktion, die aus Potenzen, Wurzeln, Exponentialen, Logarithmen, trigonometrischen Funktionen (sin, cos, tan) und ihren Inversen sowie den hyperbolischen Funktionen (sinh, cosh, tanh) und ihren Inversen aufgebaut ist.
Die Konformität mit diesem Protokoll bedeutet, dass alle diese Bausteine als statische Funktionen für den Typ verfügbar sind.
let x: Float = 1 let y = Float.sin(x) // 0.84147096
Erklärung
public protocol ElementaryFunctions
Ein Typ, dessen verschachtelte Gleitkomma-Tensoreigenschaften und -elemente von voller Genauigkeit in reduzierte Genauigkeit und umgekehrt konvertiert werden können.
Ein Implementierungsdetail, mit dem die Tatsache umgangen wird, dass Swift keine generische Einschränkung ausdrücken kann, dass ein Typ eine Instanz von
Sampling
.Erklärung
public protocol SamplingProtocol : Collection
Ein Typ, der über eine
numpy.ndarray
Instanz initialisiert werden kann, die alsPythonObject
.Erklärung
public protocol ConvertibleFromNumpyArray
Ein Typ, der bitweise mit einem oder mehreren NumPy-Skalartypen kompatibel ist.
Erklärung
public protocol NumpyScalarCompatible
Ein Typ, dessen Werte in ein
PythonObject
konvertiert werdenPythonObject
.Erklärung
public protocol PythonConvertible
Ein Typ, der über ein
PythonObject
initialisiert werdenPythonObject
.Erklärung
public protocol ConvertibleFromPython
Ein Typ, der aussetzbare deterministische Pseudozufallsdaten liefert.
Ein SeedableRandomNumberGenerator kann überall dort verwendet werden, wo ein RandomNumberGenerator verwendet werden würde. Dies ist nützlich, wenn die Pseudozufallsdaten über Läufe hinweg reproduzierbar sein müssen.
Anpassung an das SeedableRandomNumberGenerator-Protokoll
Um einen benutzerdefinierten Typ an das
SeedableRandomNumberGenerator
ProtokollSeedableRandomNumberGenerator
, implementieren Sie den Initialisiererinit(seed: [UInt8])
sowie die Anforderungen fürRandomNumberGenerator
. Die vonnext()
zurückgegebenen Werte müssen eine deterministische Sequenz bilden, die nur von dem bei der Initialisierung bereitgestellten Startwert abhängt.Erklärung
public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
Erklärung
public protocol RandomDistribution
Eine wiederkehrende Schichtzelle.
Erklärung
public protocol RecurrentLayerCell: Layer where Input == RNNCellInput<TimeStepInput, State>, Output == RNNCellOutput<TimeStepOutput, State>
Ein Typ mit Werten, die differenzierbare Binäroperationen unterstützen.
Wird von
BidirectionalRecurrentLayer
als allgemeine Anforderung für Zusammenführungsfunktionen verwendet.Erklärung
public protocol Mergeable : AdditiveArithmetic, Differentiable
Erklärung
public protocol TensorOperation
Erklärung
public protocol TFTensorOperation : TensorOperation
Spezielles Protokoll zum Aufrufen von Tensorflow-Operationen, die heterogene Arrays als Eingabe verwenden.
Erklärung
public protocol AnyTensor
Erklärung
public protocol TensorProtocol
Erklärung
public protocol DifferentiableTensorProtocol: TensorProtocol & Differentiable & EuclideanDifferentiable where Scalar: TensorFlowFloatingPoint
Ein Protokoll, das Typen darstellt, die dem
Array<CTensorHandle>
.Dieses Protokoll wird getrennt von
TensorGroup
definiert, damit die Anzahl der Tensoren zur Laufzeit bestimmt werden kann. Beispielsweise kann[Tensor<Float>]
zur Kompilierungszeit eine unbekannte Anzahl von Elementen aufweisen.Dieses Protokoll kann automatisch für Strukturen abgeleitet werden, deren gespeicherte Eigenschaften alle dem
TensorGroup
Protokoll entsprechen. Es kann nicht automatisch für Strukturen abgeleitet werden, deren Eigenschaften aufgrund der Konstruktoranforderungen alle mitTensorArrayProtocol
übereinstimmen (dh in solchen Fällen ist es unmöglich zu wissen, wie diecount
unter den gespeicherten Eigenschaften aufgeschlüsselt wird).Erklärung
public protocol TensorArrayProtocol
Ein Protokoll, das Typen darstellt, die dem
Array<CTensorHandle>
.Wenn eine
TensorGroup
als Argument für eine Tensoroperation verwendet wird, wird sie als Argumentliste übergeben, deren Elemente die Tensorfelder des Typs sind.Wenn eine
TensorGroup
als Ergebnis einer Tensoroperation zurückgegeben wird, wird sie initialisiert, wobei ihre Tensorfelder auf die Tensorergebnisse der Tensoroperation gesetzt werden.Erklärung
public protocol TensorGroup : TensorArrayProtocol
Ein unterstützter Datentyp in x10.
Erklärung
public protocol XLAScalarType