Следующие структуры доступны по всему миру.
Объединение двух последовательностей с одним и тем же типом элемента.
Декларация
public struct Concatenation<Base1: Sequence, Base2: Sequence>: Sequence where Base1.Element == Base2.Element
extension Concatenation: Collection where Base1: Collection, Base2: Collection
extension Concatenation: BidirectionalCollection where Base1: BidirectionalCollection, Base2: BidirectionalCollection
extension Concatenation: RandomAccessCollection where Base1: RandomAccessCollection, Base2: RandomAccessCollection
Повернутый вид коллекции.
Декларация
public struct RotatedCollection<Base> : Collection where Base : Collection
extension RotatedCollection: BidirectionalCollection where Base: BidirectionalCollection
extension RotatedCollection: RandomAccessCollection where Base: RandomAccessCollection
Декларация
public struct AnyDifferentiable : Differentiable
Производное значение со стертым типом.
Тип
AnyDerivative
пересылает свои операции к произвольному базовому производному значению, соответствующемуDifferentiable
иAdditiveArithmetic
, скрывая особенности базового значения.Декларация
@frozen public struct AnyDerivative : Differentiable & AdditiveArithmetic
Многомерный массив элементов, который представляет собой обобщение векторов и матриц до потенциально более высоких измерений.
Общий параметр
Scalar
описывает тип скаляров в тензоре (например,Int32
,Float
и т. д.).Декларация
@frozen public struct Tensor<Scalar> where Scalar : TensorFlowScalar
extension Tensor: Collatable
extension Tensor: CopyableToDevice
extension Tensor: AnyTensor
extension Tensor: ExpressibleByArrayLiteral
extension Tensor: CustomStringConvertible
extension Tensor: CustomPlaygroundDisplayConvertible
extension Tensor: CustomReflectable
extension Tensor: TensorProtocol
extension Tensor: TensorGroup
extension Tensor: ElementaryFunctions where Scalar: TensorFlowFloatingPoint
extension Tensor: VectorProtocol where Scalar: TensorFlowFloatingPoint
extension Tensor: Mergeable where Scalar: TensorFlowFloatingPoint
extension Tensor: Equatable where Scalar: Equatable
extension Tensor: Codable where Scalar: Codable
extension Tensor: AdditiveArithmetic where Scalar: Numeric
extension Tensor: PointwiseMultiplicative where Scalar: Numeric
extension Tensor: Differentiable & EuclideanDifferentiable where Scalar: TensorFlowFloatingPoint
extension Tensor: DifferentiableTensorProtocol where Scalar: TensorFlowFloatingPoint
Функция отката, которая выполняет транспонирование трансляции двух
Tensors
.Декларация
public struct BroadcastingPullback
Контекст, в котором хранится локальная контекстная информация, используемая API глубокого обучения, например слоями.
Используйте
Context.local
для получения текущего локального контекста потока.Примеры:
- Установите текущую фазу обучения на обучение, чтобы такие слои, как
BatchNorm
вычисляли среднее значение и дисперсию при применении к входным данным.
Context.local.learningPhase = .training
- Установите текущую фазу обучения на вывод, чтобы такие слои, как
Dropout
не выпадали из единиц измерения при применении к входным данным.
Context.local.learningPhase = .inference
Декларация
public struct Context
- Установите текущую фазу обучения на обучение, чтобы такие слои, как
Одномерный слой свертки (например, временная свертка по временному ряду).
Этот слой создает фильтр свертки, который свертывается с входными данными слоя для создания тензора выходных данных.
Декларация
@frozen public struct Conv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Двумерный слой свертки (например, пространственная свертка изображений).
Этот слой создает фильтр свертки, который свертывается с входными данными слоя для создания тензора выходных данных.
Декларация
@frozen public struct Conv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Трехмерный слой свертки для пространственной/пространственно-временной свертки изображений.
Этот слой создает фильтр свертки, который свертывается с входными данными слоя для создания тензора выходных данных.
Декларация
@frozen public struct Conv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Одномерный транспонированный слой свертки (например, временная транспонированная свертка изображений).
Этот слой создает фильтр свертки, который транспонируется сверткой с входными данными слоя для создания тензора выходных данных.
Декларация
@frozen public struct TransposedConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Двумерный транспонированный слой свертки (например, пространственно транспонированная свертка изображений).
Этот слой создает фильтр свертки, который транспонируется сверткой с входными данными слоя для создания тензора выходных данных.
Декларация
@frozen public struct TransposedConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Трехмерный транспонированный слой свертки (например, пространственно транспонированная свертка изображений).
Этот слой создает фильтр свертки, который транспонируется сверткой с входными данными слоя для создания тензора выходных данных.
Декларация
@frozen public struct TransposedConv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Двумерный слой глубинной свертки.
Этот слой создает отдельные фильтры свертки, которые свертываются с входными данными слоя для создания тензора выходных данных.
Декларация
@frozen public struct DepthwiseConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Слой для добавления заполнения нулями во временном измерении.
Декларация
public struct ZeroPadding1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Слой для добавления нулей в пространственные измерения.
Декларация
public struct ZeroPadding2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Слой для добавления заполнения нулями в пространственных/пространственно-временных измерениях.
Декларация
public struct ZeroPadding3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Одномерный отделимый слой свертки.
Этот слой выполняет глубинную свертку, которая действует отдельно на каналы, за которой следует точечная свертка, которая смешивает каналы.
Декларация
@frozen public struct SeparableConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Двумерный разделимый слой свертки.
Этот слой выполняет глубинную свертку, которая действует отдельно на каналы, за которой следует точечная свертка, которая смешивает каналы.
Декларация
@frozen public struct SeparableConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Выровненный слой.
Слой выравнивания выравнивает входные данные при применении, не влияя на размер пакета.
Декларация
@frozen public struct Flatten<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Слой изменения формы.
Декларация
@frozen public struct Reshape<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Слой, содержащий пользовательскую дифференцируемую функцию.
Декларация
public struct Function<Input, Output> : ParameterlessLayer where Input : Differentiable, Output : Differentiable
Значение динамического типа TensorFlow, которое можно создать из типов, соответствующих
TensorFlowScalar
.Декларация
public struct TensorDataType : Equatable
Декларация
Представляет потенциально большой набор элементов.
Dataset
можно использовать для представления входного конвейера как набора тензоров элементов.Декларация
@available(*, deprecated, message: "Datasets will be removed in S4TF v0.10. Please use the new Batches API instead.") @frozen public struct Dataset<Element> where Element : TensorGroup
extension Dataset: Sequence
Тип, позволяющий перебирать элементы набора данных.
Декларация
@available(*, deprecated) @frozen public struct DatasetIterator<Element> where Element : TensorGroup
extension DatasetIterator: IteratorProtocol
Структура, подобная двум кортежам, соответствующая TensorGroup и представляющая кортеж из двух типов, соответствующих
TensorGroup
.Декларация
@frozen public struct Zip2TensorGroup<T, U> : TensorGroup where T : TensorGroup, U : TensorGroup
Плотно связанный слой нейронной сети.
Dense
реализует операциюactivation(matmul(input, weight) + bias)
, гдеweight
— это матрица весов,bias
— вектор смещения, аactivation
— поэлементная функция активации.Этот слой также поддерживает трехмерные весовые тензоры с двумерными матрицами смещения. В этом случае первое измерение обоих рассматривается как размер пакета, который соответствует первому измерению
input
, и используется пакетный вариант операцииmatmul(_:_:)
, таким образом используя разные вес и смещение для каждого элемента. во входной партии.Декларация
@frozen public struct Dense<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Устройство, на котором можно разместить
Tensor
.Декларация
public struct Device
extension Device: Equatable
extension Device: CustomStringConvertible
Выпадающий слой.
Отсев заключается в случайном присвоении части входных единиц значения
0
при каждом обновлении во время обучения, что помогает предотвратить переобучение.Декларация
@frozen public struct Dropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianNoise
добавляет шум, выбранный из нормального распределения.Добавленный шум всегда имеет нулевое среднее значение, но имеет настраиваемое стандартное отклонение.
Декларация
public struct GaussianNoise<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianDropout
умножает входные данные на шум, выбранный из нормального распределения со средним значением 1,0.Поскольку это уровень регуляризации, он активен только во время обучения. Во время вывода
GaussianDropout
проходит через входные данные без изменений.Декларация
public struct GaussianDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Выпадающий слой Альфа.
Alpha Dropout — это
Dropout
, который сохраняет среднее значение и дисперсию входных данных в исходных значениях, чтобы обеспечить свойство самонормализации даже после этого исключения. Alpha Dropout хорошо подходит для масштабированных экспоненциальных линейных единиц, случайным образом устанавливая для активации отрицательное значение насыщения.Источник: Самонормализующиеся нейронные сети: https://arxiv.org/abs/1706.02515 .
Декларация
@frozen public struct AlphaDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Слой внедрения.
Embedding
фактически представляет собой таблицу поиска, которая отображает индексы из фиксированного словаря в векторные представления фиксированного размера (плотные), например[[0], [3]] -> [[0.25, 0.1], [0.6, -0.2]]
.Декларация
public struct Embedding<Scalar> : Module where Scalar : TensorFlowFloatingPoint
Пустая структура, представляющая пустые
TangentVector
для слоев без параметров.Декларация
public struct EmptyTangentVector: EuclideanDifferentiable, VectorProtocol, ElementaryFunctions, PointwiseMultiplicative, KeyPathIterable
Пара первого и второго моментов (т. е. среднее и дисперсия).
Примечание
Это необходимо, поскольку типы кортежей не дифференцируемы.Декларация
public struct Moments<Scalar> : Differentiable where Scalar : TensorFlowFloatingPoint
Двумерный морфологический слой расширения
Этот слой возвращает морфологическое расширение входного тензора с помощью предоставленных фильтров.
Декларация
@frozen public struct Dilation2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Двумерный морфологический эрозионный слой
Этот слой возвращает морфологическую эрозию входного тензора с помощью предоставленных фильтров.
Декларация
@frozen public struct Erosion2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Ленивый выбор элементов в заданном порядке из некоторой базовой коллекции.
Декларация
public struct Sampling<Base: Collection, Selection: Collection> where Selection.Element == Base.Index
extension Sampling: SamplingProtocol
extension Sampling: Collection
extension Sampling: BidirectionalCollection where Selection: BidirectionalCollection
extension Sampling: RandomAccessCollection where Selection: RandomAccessCollection
Коллекция самых длинных непересекающихся смежных фрагментов некоторой
Base
коллекции, начиная с ее первого элемента и имеющих некоторую фиксированную максимальную длину.Все элементы этой коллекции, за исключением последнего, имеют
count
batchSize
, за исключением случаевBase.count % batchSize !=0
, в этом случаеcount
последнего пакета равенbase.count % batchSize.
Декларация
public struct Slices<Base> where Base : Collection
extension Slices: Collection
Слой пакетной нормализации.
Нормализует активации предыдущего слоя в каждой партии, т. е. применяет преобразование, которое поддерживает среднюю активацию близкой к
0
, а стандартное отклонение активации близкое к1
.Декларация
@frozen public struct BatchNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Слой, который применяет нормализацию слоя к мини-пакету входных данных.
Ссылка: Нормализация слоев .
Декларация
@frozen public struct LayerNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Слой, который применяет групповую нормализацию к мини-пакету входных данных.
Ссылка: Нормализация групп .
Декларация
@frozen public struct GroupNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Слой, который применяет нормализацию экземпляра к мини-пакету входных данных.
Ссылка: Нормализация экземпляров: недостающий ингредиент для быстрой стилизации .
Декларация
@frozen public struct InstanceNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Состояние для одного шага одного веса внутри оптимизатора.
Декларация
public struct OptimizerWeightStepState
Доступ к глобальному состоянию осуществляется через
StateAccessor
.Декларация
public struct OptimizerState
[String: Float]
но к элементам можно получить доступ, как если бы они были членами.Декларация
@dynamicMemberLookup public struct HyperparameterDictionary
Оптимизатор, работающий с одной группой параметров.
Декларация
public struct ParameterGroupOptimizer
Типобезопасная оболочка вокруг значения индекса
Int
для локальных значений оптимизатора.Декларация
public struct LocalAccessor
Типобезопасная оболочка вокруг значения индекса
Int
для глобальных значений оптимизатора.Декларация
public struct GlobalAccessor
Типобезопасная оболочка вокруг значения индекса
Int
для значений состояния оптимизатора.Декларация
public struct StateAccessor
Создает
ParameterGroupOptimizer
. Это используется по существу на уровне одного веса в модели. Сопоставление групп параметров, выбранных с помощью ([Bool]
с Оптимизатором Группы Параметров), определяет окончательный оптимизатор.Декларация
public struct ParameterGroupOptimizerBuilder
Максимальный уровень пула для временных данных.
Декларация
@frozen public struct MaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Максимальный уровень объединения пространственных данных.
Декларация
@frozen public struct MaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Максимальный уровень объединения пространственных или пространственно-временных данных.
Декларация
@frozen public struct MaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Средний уровень объединения временных данных.
Декларация
@frozen public struct AvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Средний уровень объединения пространственных данных.
Декларация
@frozen public struct AvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Средний уровень объединения пространственных или пространственно-временных данных.
Декларация
@frozen public struct AvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Глобальный средний уровень объединения временных данных.
Декларация
@frozen public struct GlobalAvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Глобальный средний уровень объединения пространственных данных.
Декларация
@frozen public struct GlobalAvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Глобальный средний уровень объединения пространственных и пространственно-временных данных.
Декларация
@frozen public struct GlobalAvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Глобальный максимальный уровень пула для временных данных.
Декларация
@frozen public struct GlobalMaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Глобальный максимальный уровень объединения пространственных данных.
Декларация
@frozen public struct GlobalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Глобальный максимальный уровень объединения пространственных и пространственно-временных данных.
Декларация
@frozen public struct GlobalMaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Слой дробного максимального объединения пространственных данных. Примечание.
FractionalMaxPool
не имеет реализации XLA, что может влиять на производительность.Декларация
@frozen public struct FractionalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
PythonObject
представляет объект в Python и поддерживает динамический поиск членов. Любой доступ к члену, напримерobject.foo
будет динамически запрашивать среду выполнения Python для члена с указанным именем в этом объекте.PythonObject
передается и возвращается из всех вызовов функций Python и ссылок на члены. Он поддерживает стандартные арифметические операции Python и операторы сравнения.Внутри
PythonObject
реализован как указатель с подсчетом ссылок наPyObject
API Python C.Декларация
@dynamicCallable @dynamicMemberLookup public struct PythonObject
extension PythonObject : CustomStringConvertible
extension PythonObject : CustomPlaygroundDisplayConvertible
extension PythonObject : CustomReflectable
extension PythonObject : PythonConvertible, ConvertibleFromPython
extension PythonObject : SignedNumeric
extension PythonObject : Strideable
extension PythonObject : Equatable, Comparable
extension PythonObject : Hashable
extension PythonObject : MutableCollection
extension PythonObject : Sequence
extension PythonObject : ExpressibleByBooleanLiteral, ExpressibleByIntegerLiteral, ExpressibleByFloatLiteral, ExpressibleByStringLiteral
extension PythonObject : ExpressibleByArrayLiteral, ExpressibleByDictionaryLiteral
Оболочка
PythonObject
, позволяющая вызывать вызовы методов. Исключения, создаваемые функциями Python, отображаются как ошибки Swift и выдаются.Примечание
ThrowingPythonObject
намеренно не имеет атрибута@dynamicCallable
, поскольку синтаксис вызова неинтуитивен:x.throwing(arg1, arg2, ...)
. Методы по-прежнему будут называтьсяdynamicallyCall
до дальнейшего обсуждения/проектирования.Декларация
public struct ThrowingPythonObject
Оболочка
PythonObject
, обеспечивающая доступ к членам. Операции доступа к членам возвращаютOptional
результат. При сбое доступа к участнику возвращаетсяnil
.Декларация
@dynamicMemberLookup public struct CheckingPythonObject
Интерфейс для Python.
PythonInterface
позволяет взаимодействовать с Python. Его можно использовать для импорта модулей и динамического доступа к встроенным типам и функциям Python.Примечание
Он не предназначен для прямой инициализацииPythonInterface
. Вместо этого используйте глобальный экземплярPythonInterface
под названиемPython
.Декларация
@dynamicMemberLookup public struct PythonInterface
Декларация
public struct PythonLibrary
Генератор случайных чисел со стиранием типа.
Тип
AnyRandomNumberGenerator
перенаправляет операции генерации случайных чисел базовому генератору случайных чисел, скрывая его конкретный базовый тип.Декларация
public struct AnyRandomNumberGenerator : RandomNumberGenerator
Реализация
SeedableRandomNumberGenerator
с использованием ARC4.ARC4 — это поточный шифр, генерирующий псевдослучайный поток байтов. Этот PRNG использует начальное число в качестве ключа.
ARC4 описан в книге Шнайера Б. «Прикладная криптография: протоколы, алгоритмы и исходный код на C», 2-е издание, 1996 г.
Отдельный генератор не является потокобезопасным, но отдельные генераторы не имеют общего состояния. Генерируемые случайные данные имеют высокое качество, но не подходят для криптографических приложений.
Декларация
@frozen public struct ARC4RandomNumberGenerator : SeedableRandomNumberGenerator
Реализация
SeedableRandomNumberGenerator
с использованием Threefry. Салмон и др. SC 2011. Параллельные случайные числа: так же просто, как 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdf .Эта структура реализует 20-раундовый ГПСЧ Threefry2x32. Он должен быть заполнен 64-битным значением.
Отдельный генератор не является потокобезопасным, но отдельные генераторы не имеют общего состояния. Генерируемые случайные данные имеют высокое качество, но не подходят для криптографических приложений.
Декларация
public struct ThreefryRandomNumberGenerator : SeedableRandomNumberGenerator
Реализация
SeedableRandomNumberGenerator
с использованием Philox. Салмон и др. SC 2011. Параллельные случайные числа: так же просто, как 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdf .Эта структура реализует 10-раундовый ГПСЧ Philox4x32. Он должен быть заполнен 64-битным значением.
Отдельный генератор не является потокобезопасным, но отдельные генераторы не имеют общего состояния. Генерируемые случайные данные имеют высокое качество, но не подходят для криптографических приложений.
Декларация
public struct PhiloxRandomNumberGenerator : SeedableRandomNumberGenerator
Декларация
@frozen public struct UniformIntegerDistribution<T> : RandomDistribution where T : FixedWidthInteger
Декларация
@frozen public struct UniformFloatingPointDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Декларация
@frozen public struct NormalDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Декларация
@frozen public struct BetaDistribution : RandomDistribution
Входные данные для рекуррентной нейронной сети.
Декларация
public struct RNNCellInput<Input, State> : Differentiable where Input : Differentiable, State : Differentiable
extension RNNCellInput: EuclideanDifferentiable where Input: EuclideanDifferentiable, State: EuclideanDifferentiable
Выход в рекуррентную нейронную сеть.
Декларация
public struct RNNCellOutput<Output, State> : Differentiable where Output : Differentiable, State : Differentiable
extension RNNCellOutput: EuclideanDifferentiable where Output: EuclideanDifferentiable, State: EuclideanDifferentiable
Базовая ячейка RNN.
Декларация
public struct BasicRNNCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Ячейка LSTM.
Декларация
public struct LSTMCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Ячейка ГРУ.
Декларация
public struct GRUCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Декларация
public struct RecurrentLayer<Cell> : Layer where Cell : RecurrentLayerCell
extension RecurrentLayer: Equatable where Cell: Equatable
extension RecurrentLayer: AdditiveArithmetic where Cell: AdditiveArithmetic
Декларация
public struct BidirectionalRecurrentLayer<Cell: RecurrentLayerCell>: Layer where Cell.TimeStepOutput: Mergeable
Слой, последовательно составляющий два или более других слоев.
Примеры:
- Создайте простую двухслойную модель перцептрона для MNIST:
let inputSize = 28 * 28 let hiddenSize = 300 var classifier = Sequential { Dense<Float>(inputSize: inputSize, outputSize: hiddenSize, activation: relu) Dense<Float>(inputSize: hiddenSize, outputSize: 3, activation: identity) }
- Создайте автоэнкодер для MNIST:
var autoencoder = Sequential { // The encoder. Dense<Float>(inputSize: 28 * 28, outputSize: 128, activation: relu) Dense<Float>(inputSize: 128, outputSize: 64, activation: relu) Dense<Float>(inputSize: 64, outputSize: 12, activation: relu) Dense<Float>(inputSize: 12, outputSize: 3, activation: relu) // The decoder. Dense<Float>(inputSize: 3, outputSize: 12, activation: relu) Dense<Float>(inputSize: 12, outputSize: 64, activation: relu) Dense<Float>(inputSize: 64, outputSize: 128, activation: relu) Dense<Float>(inputSize: 128, outputSize: imageHeight * imageWidth, activation: tanh) }
Декларация
@_functionBuilder public struct LayerBuilder
ShapedArray
— многомерный массив. Он имеет форму типа[Int]
и определяет размеры массива, а в качестве хранилища использует внутреннийTensorBuffer
.Декларация
@frozen public struct ShapedArray<Scalar> : _ShapedArrayProtocol
extension ShapedArray: RandomAccessCollection, MutableCollection
extension ShapedArray: CustomStringConvertible
extension ShapedArray: CustomPlaygroundDisplayConvertible
extension ShapedArray: CustomReflectable
extension ShapedArray: ExpressibleByArrayLiteral where Scalar: TensorFlowScalar
extension ShapedArray: Equatable where Scalar: Equatable
extension ShapedArray: Hashable where Scalar: Hashable
extension ShapedArray: Codable where Scalar: Codable
Непрерывный фрагмент экземпляра
ShapedArray
илиShapedArraySlice
.ShapedArraySlice
обеспечивает быстрые и эффективные операции с смежными фрагментами экземпляровShapedArray
. ЭкземплярыShapedArraySlice
не имеют собственного хранилища. Вместо этого они предоставляют представление о хранилище своего базовогоShapedArray
.ShapedArraySlice
может представлять два разных типа срезов: массивы элементов и подмассивы.Массивы элементов — это подразмерные элементы
ShapedArray
: их ранг на единицу меньше, чем у их базы. Срезы массива элементов получаются путем индексации экземпляраShapedArray
с помощью единственного индексаInt32
.Например:
var matrix = ShapedArray(shape: [2, 2], scalars: [0, 1, 2, 3]) // `matrix` represents [[0, 1], [2, 3]]. let element = matrix[0] // `element` is a `ShapedArraySlice` with shape [2]. It is an element // array, specifically the first element in `matrix`: [0, 1]. matrix[1] = ShapedArraySlice(shape: [2], scalars: [4, 8]) // The second element in `matrix` has been mutated. // `matrix` now represents [[0, 1, 4, 8]].
Подмассивы — это непрерывный диапазон элементов в
ShapedArray
. Ранг подмассива такой же, как и у его основания, но его ведущим измерением является счетчик диапазона срезов. Срезы подмассива получаются путем индексацииShapedArray
с помощьюRange<Int32>
, который представляет диапазон элементов (в ведущем измерении). Такие методы, какprefix(:)
иsuffix(:)
, которые внутренне индексируют диапазон, также создают подмассив.Например:
let zeros = ShapedArray(repeating: 0, shape: [3, 2]) var matrix = ShapedArray(shape: [3, 2], scalars: Array(0..<6)) // `zeros` represents [[0, 0], [0, 0], [0, 0]]. // `matrix` represents [[0, 1], [2, 3], [4, 5]]. let subarray = matrix.prefix(2) // `subarray` is a `ShapedArraySlice` with shape [2, 2]. It is a slice // of the first 2 elements in `matrix` and represents [[0, 1], [2, 3]]. matrix[0..<2] = zeros.prefix(2) // The first 2 elements in `matrix` have been mutated. // `matrix` now represents [[0, 0], [0, 0], [4, 5]].
Декларация
@frozen public struct ShapedArraySlice<Scalar> : _ShapedArrayProtocol
extension ShapedArraySlice: RandomAccessCollection, MutableCollection
extension ShapedArraySlice: CustomStringConvertible
extension ShapedArraySlice: CustomPlaygroundDisplayConvertible
extension ShapedArraySlice: CustomReflectable
extension ShapedArraySlice: ExpressibleByArrayLiteral where Scalar: TensorFlowScalar
extension ShapedArraySlice: Equatable where Scalar: Equatable
extension ShapedArraySlice: Hashable where Scalar: Hashable
extension ShapedArraySlice: Codable where Scalar: Codable
StringTensor
— это многомерный массив, элементами которого являютсяString
s.Декларация
@frozen public struct StringTensor
extension StringTensor: TensorGroup
TensorHandle
— это тип, используемый ops. Он включает типScalar
, который внутренние компоненты компилятора могут использовать для определения типов данных параметров при их извлечении в тензорную программу.Декларация
public struct TensorHandle<Scalar> where Scalar : _TensorFlowDataTypeCompatible
extension TensorHandle: TensorGroup
Декларация
public struct ResourceHandle
extension ResourceHandle: TensorGroup
Декларация
public struct VariantHandle
extension VariantHandle: TensorGroup
Структура, представляющая форму тензора.
TensorShape
— это тонкая оболочка вокруг массива целых чисел, представляющих размеры фигуры. Все типы тензоров используютTensorShape
для представления своей формы.Декларация
@frozen public struct TensorShape : ExpressibleByArrayLiteral
extension TensorShape: Collection, MutableCollection
extension TensorShape: RandomAccessCollection
extension TensorShape: RangeReplaceableCollection
extension TensorShape: Equatable
extension TensorShape: Codable
extension TensorShape: CustomStringConvertible
TensorVisitorPlan приближается к
[WritableKeyPath<Base, Tensor<Float>]
но более эффективен. Это полезно для написания универсальных оптимизаторов, которые хотят сопоставить градиенты, существующие веса и индекс, который можно использовать для поиска вспомогательно сохраненных весов. Это немного более эффективно (~ в 2 раза), но могло бы быть и лучше, поскольку позволяет компенсировать несколько более высокие накладные расходы (дополнительное разыменование указателя) и отсутствие необходимости выполнять работу O(глубина_дерева), которая требуется с простым списком для отслеживания каждого отдельного KeyPath.Декларация
public struct TensorVisitorPlan<Base>
Слой повышения дискретизации для одномерных входных данных.
Декларация
@frozen public struct UpSampling1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Слой повышения дискретизации для двумерных входных данных.
Декларация
@frozen public struct UpSampling2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Слой повышения дискретизации для трехмерных входных данных.
Декларация
@frozen public struct UpSampling3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Собирает правильные счетчики прогнозов и общие суммы потерь.
Декларация
public struct HostStatistics