Протоколы

Следующие протоколы доступны по всему миру.

  • Предоставляет точки настройки для алгоритмов MutableCollection .

    Если бы эти требования были включены в стандартную библиотеку, они были бы просто частью MutableCollection . Тем временем вы можете объявить соответствие коллекции MutableCollectionAlgorithms чтобы получить эти точки настройки для использования из других алгоритмов, определенных в MutableCollectionAlgorithms .

    Декларация

    public protocol MutableCollectionAlgorithms: MutableCollection
    where SubSequence: MutableCollectionAlgorithms
  • Декларация

    public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
  • Декларация

    public protocol TensorRangeExpression
  • Типы, элементы которых можно сопоставить с некоторым элементом более высокого ранга того же типа (пример: тензоры, кортеж тензоров)

    Декларация

    public protocol Collatable
  • Тип, вложенные свойства и элементы которого можно скопировать в Device .

    Декларация

    public protocol CopyableToDevice : _CopyableToDevice
  • Тип, значения которого предоставляют настраиваемые ключевые пути к свойствам или элементам.

    Декларация

    public protocol KeyPathIterable : _KeyPathIterableBase
  • Скалярный тип данных, совместимый с TensorFlow.

    Типы, соответствующие TensorFlowScalar можно использовать в качестве связанного Scalar типа Tensor .

  • Целочисленный тип данных, представляющий целочисленные типы, которые можно использовать в качестве тензорных индексов в TensorFlow.

    Декларация

    public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
  • Тип данных с плавающей запятой, соответствующий Differentiable и совместимый с TensorFlow.

    Примечание

    Tensor условно соответствует Differentiable когда связанный тип Scalar соответствует TensorFlowFloatingPoint .

    Декларация

    public protocol TensorFlowFloatingPoint:
      TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions
    where
      Self.RawSignificand: FixedWidthInteger,
      Self == Self.TangentVector
  • Тип, математически представляющий дифференцируемое многообразие, касательные пространства которого конечномерны.

    Декларация

    public protocol Differentiable
  • Тип со значениями, поддерживающими поточечное умножение.

    Декларация

    public protocol PointwiseMultiplicative : AdditiveArithmetic
  • Тип, представляющий неранжированное векторное пространство. Значения этого типа являются элементами этого векторного пространства и либо не имеют формы, либо имеют статическую форму.

    Декларация

    public protocol VectorProtocol : AdditiveArithmetic
  • Тип, дифференцируемый в евклидовом пространстве. Тип может представлять векторное пространство или состоять из векторного пространства и какого-либо другого недифференцируемого компонента.

    Математически это представляет собой многообразие произведений, состоящее из дифференцируемого векторного пространства и некоторого произвольного многообразия, где касательное расслоение всего многообразия произведений равно компоненту векторного пространства.

    Эта абстракция полезна для представления общих дифференцируемых структур данных, которые содержат как дифференцируемые векторные свойства, так и другие хранимые свойства, которые не имеют производной, например

    struct Perceptron: @memberwise EuclideanDifferentiable {
        var weight: SIMD16<Float>
        var bias: Float
        @noDerivative var useBias: Bool
    }
    

    Примечание

    Приведите тип в соответствие с EuclideanDifferentiable если он дифференцируем только относительно своего компонента векторного пространства и когда его TangentVector равен его компоненту векторного пространства.

    Декларация

    public protocol EuclideanDifferentiable : Differentiable
  • Декларация

  • Слой нейронной сети.

    Типы, соответствующие Layer , представляют функции, которые сопоставляют входные данные с выходными. Они могут иметь внутреннее состояние, представленное параметрами, такими как тензоры веса.

    Экземпляры Layer определяют дифференцируемый метод callAsFunction(_:) для сопоставления входных данных с выходными.

    Декларация

    public protocol Layer : Module where Self.Input : Differentiable
  • Слой нейронной сети без параметров.

    TangentVector слоев без параметров всегда равен EmptyTangentVector .

    Декларация

    public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
  • Тип, которому доступны элементарные функции.

    «Элементарная функция» — это функция, составленная из степеней, корней, экспонент, логарифмов, тригонометрических функций (sin, cos, tan) и их обратных, а также гиперболических функций (sinh, cosh, tanh) и их обратных.

    Соответствие этому протоколу означает, что все эти стандартные блоки доступны как статические функции этого типа.

    let x: Float = 1
    let y = Float.sin(x) // 0.84147096
    

    Декларация

    public protocol ElementaryFunctions
  • Тип, вложенные свойства и элементы тензора с плавающей запятой могут быть преобразованы из режима полной точности в пониженную точность и наоборот.

  • Деталь реализации, используемая для обхода того факта, что Swift не может выразить общее ограничение, согласно которому некоторый тип должен быть экземпляром Sampling .

    Декларация

    public protocol SamplingProtocol : Collection
  • Тип, который можно инициализировать из экземпляра numpy.ndarray , представленного как PythonObject .

    Декларация

    public protocol ConvertibleFromNumpyArray
  • Тип, поразрядно совместимый с одним или несколькими скалярными типами NumPy.

    Декларация

    public protocol NumpyScalarCompatible
  • Тип, значения которого можно преобразовать в PythonObject .

    Декларация

    public protocol PythonConvertible
  • Тип, который можно инициализировать из PythonObject .

    Декларация

    public protocol ConvertibleFromPython
  • Тип, который предоставляет начальные детерминированные псевдослучайные данные.

    SeedableRandomNumberGenerator можно использовать везде, где будет использоваться RandomNumberGenerator. Это полезно, когда псевдослучайные данные должны быть воспроизводимы при различных запусках.

    Соответствие протоколу SeedableRandomNumberGenerator

    Чтобы пользовательский тип соответствовал протоколу SeedableRandomNumberGenerator , реализуйте инициализатор init(seed: [UInt8]) , а также требования для RandomNumberGenerator . Значения, возвращаемые функцией next() должны образовывать детерминированную последовательность, которая зависит только от начального числа, предоставленного при инициализации.

    Декларация

    public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
  • Декларация

    public protocol RandomDistribution
  • Ячейка рекуррентного слоя.

    Декларация

    public protocol RecurrentLayerCell: Layer
    where
      Input == RNNCellInput<TimeStepInput, State>,
      Output == RNNCellOutput<TimeStepOutput, State>
  • Тип со значениями, поддерживающими дифференцируемые двоичные операции.

    Используется BidirectionalRecurrentLayer как общее требование для функций слияния.

    Декларация

    public protocol Mergeable : AdditiveArithmetic, Differentiable
  • Декларация

    public protocol TensorOperation
  • Декларация

    public protocol TFTensorOperation : TensorOperation
  • Специальный протокол для вызова операций тензорного потока, принимающих на вход гетерогенные массивы.

    Декларация

    public protocol AnyTensor
  • Декларация

    public protocol TensorProtocol
  • Декларация

    public protocol DifferentiableTensorProtocol:
      TensorProtocol & Differentiable & EuclideanDifferentiable
    where Scalar: TensorFlowFloatingPoint
  • Протокол, представляющий типы, которые можно сопоставить с Array<CTensorHandle> .

    Этот протокол определяется отдельно от TensorGroup , чтобы количество тензоров определялось во время выполнения. Например, [Tensor<Float>] может иметь неизвестное количество элементов во время компиляции.

    Этот протокол может быть получен автоматически для структур, все сохраненные свойства которых соответствуют протоколу TensorGroup . Его нельзя вывести автоматически для структур, все свойства которых соответствуют TensorArrayProtocol из-за требований конструктора (т. е. в таких случаях было бы невозможно узнать, как разбить count сохраненных свойств).

    Декларация

    public protocol TensorArrayProtocol
  • Протокол, представляющий типы, которые можно сопоставлять с Array<CTensorHandle> и обратно.

    Когда TensorGroup используется в качестве аргумента тензорной операции, она передается как список аргументов, элементами которого являются тензорные поля типа.

    Когда TensorGroup возвращается в результате тензорной операции, она инициализируется с ее тензорными полями, установленными в тензорные результаты тензорной операции.

    Декларация

    public protocol TensorGroup : TensorArrayProtocol
  • Поддерживаемый тип данных в x10.

    Декларация

    public protocol XLAScalarType