Структуры

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

  • Объединение двух последовательностей с одним и тем же типом элемента.

    Декларация

    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
  • Декларация

    @frozen
    public struct BFloat16
    extension BFloat16: TensorFlowScalar
    extension BFloat16: XLAScalarType
  • Представляет потенциально большой набор элементов.

    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 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)
    }
    

    Декларация

    public struct Sequential<Layer1: Module, Layer2: Layer>: Module
        where Layer1.Output == Layer2.Input,
              Layer1.TangentVector.VectorSpaceScalar == Layer2.TangentVector.VectorSpaceScalar
    extension Sequential: Layer where Layer1: Layer
  • Декларация

    @_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