Swift for TensorFlow API は、高速計算を実行するための主な手段としてTensor
タイプを使用します。 Tensor
値の多次元配列を表し、 Tensor
に対する操作は 2 つのバックエンドのいずれかを使用して利用可能なアクセラレータに自動的にディスパッチされます。
Tensor
それに含まれる値の型に関して一般的です。これらの値の型はTensorFlowScalar
に準拠する必要があり、一般的な型はFloat
、 Int32
、および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
演算子にアクセスする必要がある場合があります。そうする必要がある場合は、これがどのように機能するかを示す対話型チュートリアルを利用できます。