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
в вашем коде. Если вам нужно это сделать, доступно интерактивное руководство , демонстрирующее, как это работает.