テンソルの概要

Swift for TensorFlow API は、高速計算を実行するための主な手段としてTensorタイプを使用します。 Tensor値の多次元配列を表し、 Tensorに対する操作は 2 つのバックエンドのいずれかを使用して利用可能なアクセラレータに自動的にディスパッチされます。

Tensorそれに含まれる値の型に関して一般的です。これらの値の型はTensorFlowScalarに準拠する必要があり、一般的な型はFloatInt32 、およびBoolです。たとえば、 Floatを含む 2 つの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で動作します。たとえば、それらを 2 つ追加して結果を取得するには、次のように実行できます。

let tensor3 = tensor1 + tensor2

Tensorに対して実行できる操作の完全なリストは、 API ドキュメントで入手できます。

_Raw操作

Tensor操作は、アクセラレータを操作する 2 つの異なる手段によってサポートされていますが、統一された高レベル インターフェイスを備えています。内部では、問題のTensorに使用されるバックエンドに応じて、 _RawXLAバージョンまたは_RawTFEagerバージョンにディスパッチする_Rawオペレーションが定義されています。 TensorFlow または X10 へのこれらの_Rawバインディングは自動的に生成されます。

通常、 _Raw操作を直接操作する必要はありません。慣用的な Swift インターフェイスはこれらの上に構築されており、これが通常Tensor計算を実行する方法です。

ただし、基になるすべての TensorFlow オペレーションに一致する Swift インターフェイスがあるわけではないため、コード内で_Raw演算子にアクセスする必要がある場合があります。そうする必要がある場合は、これがどのように機能するかを示す対話型チュートリアルを利用できます。