Следующие протоколы доступны по всему миру.
Предоставляет точки настройки для алгоритмов
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
Декларация
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
Слой нейронной сети.
Типы, соответствующие
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