本文へスキップ
BecomeCoder

PyTorchコース · 第2章 numpyで「学習」を実装する · レッスン4

テンソル=多次元配列

ブラウザで完結

導入

PyTorch の主役は テンソル(tensor) です。難しそうな名前ですが、正体は 「数値が並んだ多次元の箱」――つまり numpy の配列とほぼ同じものです。ここで numpy 配列に慣れておけば、PyTorch のテンソルはそのまま理解できます。

説明

次元数(軸の数)で呼び名が変わります。中身は全部「数値の入れ物」です。

flowchart LR
  s["スカラー<br/>0次元<br/>例: 5"] --> v["ベクトル<br/>1次元<br/>例: [1,2,3]"]
  v --> m["行列<br/>2次元<br/>表・画像1枚"]
  m --> t["テンソル<br/>3次元以上<br/>画像の束・動画"]
  • スカラー:ただの数値(気温 25.0 など)。
  • ベクトル:数値の一列(1人の身長・体重・年齢)。
  • 行列:数値の表(複数人 × 複数項目、白黒画像1枚)。
  • テンソル:それ以上。カラー画像は「縦 × 横 × 色(RGB)」の3次元テンソル。

AIへの入力は、こうした多次元の数値の箱です。numpy では shape(形)でその構造を確認できます。

やってみよう

下のコードで、スカラー・ベクトル・行列を作り、shape で形を確認します。行列同士の掛け算(@)も試します。ニューラルネットワークの計算は、突き詰めればこの行列の掛け算の繰り返しです。実行して形の表示を見てみましょう。

import numpy as np

scalar = np.array(5.0)
vector = np.array([1.0, 2.0, 3.0])
matrix = np.array([[1.0, 2.0, 3.0],
                   [4.0, 5.0, 6.0]])

print("スカラーの形:", scalar.shape)
print("ベクトルの形:", vector.shape)
print("行列の形:", matrix.shape, "→ 2行3列")

# 行列 × ベクトル(AIの1層ぶんの計算に相当)
weights = np.array([[0.5, 0.5, 0.5],
                    [1.0, 0.0, -1.0]])
x = np.array([2.0, 4.0, 6.0])
print("\n行列×ベクトルの結果:", weights @ x)

演習

matrix を 3行2列の別の行列に書き換え、shape(3, 2) と表示されることを確認しましょう。

ヒント1を見る

np.array([[...], [...], [...]]) のように、内側のリストを3つ、それぞれ要素2個で作ります。

ヒント2を見る

例:np.array([[1,2],[3,4],[5,6]]) の形は (3, 2) です。

まとめ

  • テンソル=多次元の数値配列。numpy 配列と実質同じで、PyTorch でもそのまま通用する。
  • 次元で スカラー→ベクトル→行列→テンソル と呼び名が変わる。
  • shape で形を確認。AIの計算の中心は行列の掛け算@)。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Python — ライブラリ付きで実行(Pyodide)

numpy / pandas / matplotlib が使える本物のPython(Pyodide)を読み込みます。初回のみ読み込みに少し時間がかかります(以降はブラウザにキャッシュされます)。
スクロールして表示された時点でも自動で読み込まれます。