Protokolle

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 mit MutableCollectionAlgorithms , damit diese Anpassungspunkte von anderen in MutableCollectionAlgorithms definierten Algorithmen MutableCollectionAlgorithms .

    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 werden Scalar zugehörige Art von Tensor .

  • 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 bedingt Differentiable wenn der mit Scalar verknüpfte Typ TensorFlowFloatingPoint 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 mit EuclideanDifferentiable wenn er nur in Bezug auf seine Vektorraumkomponente TangentVector ist und wenn sein TangentVector gleich seiner Vektorraumkomponente ist.

    Erklärung

    public protocol EuclideanDifferentiable : Differentiable
  • 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 differenzierbare callAsFunction(_:) 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 immer EmptyTangentVector .

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

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

    Erklärung

    public protocol PythonConvertible
  • Ein Typ, der über ein PythonObject initialisiert werden PythonObject .

    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 Protokoll SeedableRandomNumberGenerator , implementieren Sie den Initialisierer init(seed: [UInt8]) sowie die Anforderungen für RandomNumberGenerator . Die von next() 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 mit TensorArrayProtocol übereinstimmen (dh in solchen Fällen ist es unmöglich zu wissen, wie die count 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