Обзор тензора

API-интерфейсы Swift для TensorFlow используют тип Tensor в качестве основного средства для выполнения ускоренных вычислений. Tensor представляет собой многомерный массив значений, а операции с Tensor автоматически отправляются на доступные ускорители с использованием одного из двух бэкэндов.

Tensor является общим относительно типа содержащихся в нем значений. Тип этих значений должен соответствовать TensorFlowScalar , при этом распространенными типами являются Float , Int32 и Bool . Например, чтобы инициализировать два Float -содержащих Tensor с некоторыми заранее определенными значениями, вы можете сделать следующее:

let tensor1 = Tensor<Float>([0.0, 1.0, 2.0])
let tensor2 = Tensor<Float>([1.5, 2.5, 3.5])

Если вы пропустили параметр типа <Float> , Swift выведет тип Tensor<Double> . Double — это тип по умолчанию для литералов с плавающей запятой в Swift. Значения Float , как правило, чаще встречаются в вычислениях машинного обучения, поэтому мы используем их здесь.

Многие распространенные операторы работают с Tensor . Например, чтобы сложить два из них и получить результат, можно сделать следующее:

let tensor3 = tensor1 + tensor2

Полный список операций, которые вы можете выполнить над Tensor , доступен в документации API .

_Raw операции

Tensor операции поддерживаются двумя разными способами работы с ускорителями, но имеют единый высокоуровневый интерфейс. Под капотом определены операции _Raw , которые отправляются либо в версии _RawXLA , либо _RawTFEager , в зависимости от бэкэнда, используемого для рассматриваемых Tensor . Эти привязки _Raw к TensorFlow или X10 генерируются автоматически.

Обычно вам не нужно напрямую взаимодействовать с операциями _Raw . На их основе были созданы идиоматические интерфейсы Swift, и именно так вы обычно выполняете Tensor вычисления.

Однако не все базовые операции TensorFlow имеют соответствующие интерфейсы Swift, поэтому иногда вам может потребоваться доступ к операторам _Raw в вашем коде. Если вам нужно это сделать, доступно интерактивное руководство , демонстрирующее, как это работает.