【てんそる】

テンソル とは?

💡 ディープラーニングの「データの入れ物」となる多次元配列
📌 このページのポイント
テンソル — 次元による分類 0次元 スカラー 5 1次元 ベクトル 1 2 3 [1, 2, 3] 2次元 行列 2×3の行列 3次元以上 テンソル 多次元データ テンソルの用途(機械学習) 画像: 3次元テンソル 動画: 4次元テンソル バッチ: 5次元 次元が増えるほど複雑なデータを表現 次元数が増えるにつれ、より複雑なデータ構造を扱える
テンソルのイメージ
ひよこ ひよこ

テンソルって行列とどう違うの?

ペンギン先生 ペンギン先生

行列は縦×横の2次元の表だよね。テンソルはそれを任意の次元に拡張したものなんだ。スカラー(ただの数)は0次元テンソル、ベクトルは1次元テンソル、行列は2次元テンソル、それ以上の次元があるものが「テンソル」と呼ばれることが多いよ。

ひよこ ひよこ

画像はどんなテンソルになるの?

ペンギン先生 ペンギン先生

カラー画像は「高さ×幅×3(RGB)」の3次元テンソルになるよ。例えば224×224ピクセルのカラー画像は224×224×3のテンソルなんだ。学習時は一度に複数の画像をまとめて処理することが多いから、「バッチサイズ×高さ×幅×チャンネル」の4次元テンソルになることが多いよ。

ひよこ ひよこ

TensorFlowっていう名前はテンソルから来てるの?

ペンギン先生 ペンギン先生

そうだよ!「テンソルが流れる(flow)」という意味なんだ。ニューラルネットワークの計算はテンソルが層から層へと流れていくイメージで、それがそのまま名前になったんだよ。PyTorchも内部ではテンソル演算を使っているよ。

ひよこ ひよこ

テンソルの計算って、なんでGPUが得意なの?

ペンギン先生 ペンギン先生

GPUは何千もの小さな計算コアを持っていて、同じ演算を大量のデータに対して同時に実行するのが得意なんだ。テンソルの演算(行列の掛け算など)はまさに「同じ計算を大量の要素に一斉に適用する」パターンだから相性がいい。ただこれは「データ並列性」があるケースに限った話で、計算が前の結果に依存するような「逐次的な処理」はGPUが苦手なんだ。ニューラルネットワークの設計がGPUに合った形に進化してきたとも言えるよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「テンソル」って出てきたら「AIフレームワークで使われる多次元の数値配列」と思えればだいたいOK!
📖 おまけ:英語の意味
「tensor」 = 張力・引き伸ばすもの
💬 ラテン語の「tendere(引き伸ばす)」から来ている。もともとは物理学の応力テンソルから始まった概念で、Googleの「TensorFlow」の名前もここから来ているよ
← 用語集にもどる