Następujące protokoły są dostępne na całym świecie.
Zapewnia punkty dostosowywania dla algorytmów
MutableCollection
.Jeśli zostaną włączone do biblioteki standardowej, wymagania te będą po prostu częścią
MutableCollection
. W międzyczasie możesz zadeklarować zgodność kolekcji zMutableCollectionAlgorithms
aby uzyskać te punkty dostosowywania, które będą używane z innych algorytmów zdefiniowanych wMutableCollectionAlgorithms
.Deklaracja
public protocol MutableCollectionAlgorithms: MutableCollection where SubSequence: MutableCollectionAlgorithms
Deklaracja
public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
Deklaracja
public protocol TensorRangeExpression
Typy, których elementy można zestawić w element wyższego rzędu tego samego typu (przykład: tensory, krotka tensorów)
Deklaracja
public protocol Collatable
Typ, którego zagnieżdżone właściwości i elementy można skopiować do
Device
.Deklaracja
public protocol CopyableToDevice : _CopyableToDevice
Typ, którego wartości zapewniają niestandardowe ścieżki kluczy do właściwości lub elementów.
Deklaracja
public protocol KeyPathIterable : _KeyPathIterableBase
Skalarny typ danych zgodny z TensorFlow.
Typy zgodne z
TensorFlowScalar
mogą być używane jako typ skojarzony zeScalar
Tensor
.Typ danych całkowitych reprezentujący typy całkowite, których można używać jako indeksów tensora w TensorFlow.
Deklaracja
public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
Typ danych zmiennoprzecinkowych zgodny z
Differentiable
i zgodny z TensorFlow.Notatka
Tensor
warunkowo jest zgodny zDifferentiable
gdy skojarzony typScalar
jest zgodny zTensorFlowFloatingPoint
.Deklaracja
public protocol TensorFlowFloatingPoint: TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions where Self.RawSignificand: FixedWidthInteger, Self == Self.TangentVector
Typ, który matematycznie reprezentuje rozmaitość różniczkową, której przestrzenie styczne są skończone.
Deklaracja
public protocol Differentiable
Typ z wartościami obsługującymi mnożenie punktowe.
Deklaracja
public protocol PointwiseMultiplicative : AdditiveArithmetic
Typ reprezentujący nierankingową przestrzeń wektorową. Wartości tego typu są elementami tej przestrzeni wektorowej i nie mają kształtu lub mają kształt statyczny.
Deklaracja
public protocol VectorProtocol : AdditiveArithmetic
Typ różniczkowalny w przestrzeni euklidesowej. Typ może reprezentować przestrzeń wektorową lub składać się z przestrzeni wektorowej i innego niezróżnicowalnego składnika.
Matematycznie oznacza to rozmaitość iloczynu składającą się z różniczkowalnej przestrzeni wektorowej i pewnej dowolnej rozmaitości, gdzie wiązka styczna całej rozmaitości iloczynu jest równa składowej przestrzeni wektorowej.
Ta abstrakcja jest przydatna do reprezentowania wspólnych różniczkowalnych struktur danych, które zawierają zarówno różniczkowalne właściwości wektorów, jak i inne przechowywane właściwości, które nie mają pochodnej, np.
struct Perceptron: @memberwise EuclideanDifferentiable { var weight: SIMD16<Float> var bias: Float @noDerivative var useBias: Bool }
Notatka
Dostosuj typ doEuclideanDifferentiable
jeśli jest on różniczkowalny tylko w odniesieniu do jego składnika przestrzeni wektorowej i gdy jegoTangentVector
jest równy jego składnikowi przestrzeni wektorowej.Deklaracja
public protocol EuclideanDifferentiable : Differentiable
Deklaracja
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
Warstwa sieci neuronowej.
Typy zgodne z
Layer
reprezentują funkcje, które mapują dane wejściowe na dane wyjściowe. Mogą mieć stan wewnętrzny reprezentowany przez parametry, takie jak tensory wag.Instancje
Layer
definiują różniczkowalną metodęcallAsFunction(_:)
służącą do mapowania wejść na wyjścia.Deklaracja
public protocol Layer : Module where Self.Input : Differentiable
Bezparametrowa warstwa sieci neuronowej.
TangentVector
warstw bez parametrów ma zawszeEmptyTangentVector
.Deklaracja
public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
Typ, który ma dostępne funkcje elementarne.
„Funkcja elementarna” to funkcja zbudowana z potęg, pierwiastków, potęg wykładniczych, logarytmów, funkcji trygonometrycznych (sin, cos, tan) i ich odwrotności oraz funkcji hiperbolicznych (sinh, cosh, tanh) i ich odwrotności.
Zgodność z tym protokołem oznacza, że wszystkie te elementy konstrukcyjne są dostępne jako funkcje statyczne na typie.
let x: Float = 1 let y = Float.sin(x) // 0.84147096
Deklaracja
public protocol ElementaryFunctions
Typ, którego zagnieżdżone właściwości i elementy tensora zmiennoprzecinkowego można konwertować z pełnej precyzji na zmniejszoną precyzję i odwrotnie.
Szczegół implementacji zastosowany do obejścia faktu, że Swift nie może wyrazić ogólnego ograniczenia, zgodnie z którym jakiś typ musi być instancją
Sampling
.Deklaracja
public protocol SamplingProtocol : Collection
Typ, który można zainicjować z instancji
numpy.ndarray
reprezentowanej jakoPythonObject
.Deklaracja
public protocol ConvertibleFromNumpyArray
Typ, który jest bitowo zgodny z jednym lub większą liczbą typów skalarnych NumPy.
Deklaracja
public protocol NumpyScalarCompatible
Typ, którego wartości można przekonwertować na
PythonObject
.Deklaracja
public protocol PythonConvertible
Typ, który można zainicjować z
PythonObject
.Deklaracja
public protocol ConvertibleFromPython
Typ, który udostępnia deterministyczne dane pseudolosowe z możliwością zaszczepienia.
SeedableRandomNumberGenerator może być używany wszędzie tam, gdzie byłby używany RandomNumberGenerator. Jest to przydatne, gdy dane pseudolosowe muszą być odtwarzalne w różnych seriach.
Zgodny z protokołem SeedableRandomNumberGenerator
Aby typ niestandardowy był zgodny z protokołem
SeedableRandomNumberGenerator
, zaimplementuj inicjatorinit(seed: [UInt8])
, a także wymagania dlaRandomNumberGenerator
. Wartości zwracane przeznext()
muszą tworzyć deterministyczną sekwencję zależną tylko od materiału siewnego dostarczonego podczas inicjalizacji.Deklaracja
public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
Deklaracja
public protocol RandomDistribution
Komórka warstwy cyklicznej.
Deklaracja
public protocol RecurrentLayerCell: Layer where Input == RNNCellInput<TimeStepInput, State>, Output == RNNCellOutput<TimeStepOutput, State>
Typ z wartościami obsługującymi różniczkowalne operacje binarne.
Używane przez
BidirectionalRecurrentLayer
jako ogólne wymaganie dla funkcji scalania.Deklaracja
public protocol Mergeable : AdditiveArithmetic, Differentiable
Deklaracja
public protocol TensorOperation
Deklaracja
public protocol TFTensorOperation : TensorOperation
Specjalny protokół do wywoływania operacji tensorflow, które jako dane wejściowe pobierają heterogeniczne tablice.
Deklaracja
public protocol AnyTensor
Deklaracja
public protocol TensorProtocol
Deklaracja
public protocol DifferentiableTensorProtocol: TensorProtocol & Differentiable & EuclideanDifferentiable where Scalar: TensorFlowFloatingPoint
Protokół reprezentujący typy, które można zamapować na
Array<CTensorHandle>
.Protokół ten jest zdefiniowany oddzielnie od
TensorGroup
, aby można było określić liczbę tensorów w czasie wykonywania. Na przykład[Tensor<Float>]
może mieć nieznaną liczbę elementów w czasie kompilacji.Ten protokół można wyprowadzić automatycznie dla struktur, których przechowywane właściwości są zgodne z protokołem
TensorGroup
. Nie można go wyprowadzić automatycznie dla struktur, których wszystkie właściwości są zgodne zTensorArrayProtocol
ze względu na wymagania konstruktora (tzn. w takich przypadkach nie byłoby możliwe poznanie sposobu podziałucount
przechowywanych właściwości).Deklaracja
public protocol TensorArrayProtocol
Protokół reprezentujący typy, które można mapować do i z
Array<CTensorHandle>
.Gdy
TensorGroup
jest używany jako argument operacji tensora, jest przekazywany jako lista argumentów, której elementy są polami tensora typu.Gdy w wyniku operacji tensora zostanie zwrócona
TensorGroup
, zostanie ona zainicjowana z polami tensora ustawionymi na wyniki tensora operacji tensora.Deklaracja
public protocol TensorGroup : TensorArrayProtocol
Obsługiwany typ danych w x10.
Deklaracja
public protocol XLAScalarType