導入
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の計算の中心は行列の掛け算(@)。