Protokoły

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 z MutableCollectionAlgorithms , aby uzyskać te punkty dostosowywania, które będą używane z innych algorytmów zdefiniowanych w MutableCollectionAlgorithms .

    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 ze Scalar 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 z Differentiable , gdy skojarzony typ Scalar jest zgodny z TensorFlowFloatingPoint .

    Deklaracja

    public protocol TensorFlowFloatingPoint:
      TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions
    where
      Self.RawSignificand: FixedWidthInteger,
      Self == Self.TangentVector
  • Typ, który matematycznie reprezentuje rozmaitość różniczkowa, 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 do EuclideanDifferentiable , jeśli jest on różniczkowalny tylko w odniesieniu do jego składnika przestrzeni wektorowej i gdy jego TangentVector jest równy jego składnikowi przestrzeni wektorowej.

    Deklaracja

    public protocol EuclideanDifferentiable : Differentiable
  • 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 zawsze EmptyTangentVector .

    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 jako PythonObject .

    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 inicjator init(seed: [UInt8]) , a także wymagania dla RandomNumberGenerator . Wartości zwracane przez next() 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 z TensorArrayProtocol ze względu na wymagania konstruktora (tj. w takich przypadkach nie byłoby możliwe poznanie sposobu podziału count 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