スカラーは0階、ベクトルは1階、行列は2階。では3階、4階、... は何と呼ぶか。テンソルである。深層学習では、画像のバッチ、動画、Attentionの計算など、3次元以上のデータが当たり前に登場する。TensorFlowの名前の由来もここにある。

テンソル 階数 形状 ブロードキャスト アインシュタイン記法

テンソルとは

テンソル(Tensor)

多次元配列の一般化。

・0階テンソル:スカラー(単一の数)

・1階テンソル:ベクトル(1次元配列)

・2階テンソル:行列(2次元配列)

・3階以上:テンソル(多次元配列)

深層学習での「テンソル」は、主に多次元配列を指す。物理学のテンソルとは厳密には異なる概念だが、プログラミングでは同義的に使われる。

形状(Shape)

テンソルの構造を表す最も重要な概念が形状。

データ 形状 説明
スカラー () 0次元
ベクトル(長さ5) (5,) 1次元、5要素
行列(3×4) (3, 4) 2次元、3行4列
RGBイメージ (H, W, 3) 高さ×幅×チャンネル
画像バッチ (N, H, W, C) バッチ×高さ×幅×チャンネル
動画バッチ (N, T, H, W, C) バッチ×時間×高さ×幅×チャンネル

テンソル演算

要素ごとの演算

同じ形状のテンソル同士、対応する要素に演算を適用。

A + B, A * B, A ** 2 など

ブロードキャスト

ブロードキャスト(Broadcasting)

形状が異なるテンソル間の演算を可能にする仕組み。

小さいテンソルが自動的に拡張される。

例:(3, 4) と (4,) の和 → (4,) が各行に適用

軸(Axis)に沿った演算

sum, mean, max などを特定の軸に沿って計算。

形状 (3, 4) のテンソルで axis=0 の sum → 形状 (4,)

形状 (3, 4) のテンソルで axis=1 の sum → 形状 (3,)

深層学習での慣例

フレームワーク 画像の形状
PyTorch (N, C, H, W) チャンネルファースト
TensorFlow/Keras (N, H, W, C) チャンネルラスト

実務での応用

WEB開発での応用

画像処理:画像は3階テンソル(高さ×幅×チャンネル)。

時系列データ:複数の時系列を2階テンソルで表現。

JavaScript:TensorFlow.js でブラウザ上でテンソル計算。

AI/MLでの応用

バッチ処理:複数サンプルをまとめて処理するために次元を追加。

Attention:Query, Key, Value は (batch, seq_len, dim) の3階テンソル。

畳み込み:カーネルは4階テンソル (out_ch, in_ch, H, W)。

形状変換:reshape, transpose, squeeze, unsqueeze で形状操作。

深掘りリンク