テンソル
テンソル(tensor)
テンソルとはベクトルの概念をさらに拡張したもの
スカラー(零階のテンソル)
単一の数値
例: 1
ベクトル(一階のテンソル)
例: [1.1, 2.2, 3.3]
行列
計量テンソル(二階のテンソル)
階数(Rank), 形状(Shape)
階数(Rank): 次元の数
形状(Shape): 各軸の要素のサイズ
TensorFlow, PyTorchなどで使われるTensor
調べたところ、TnesorFlowやPyTorchで使われるテンソルはShape付きテンソルに分類されるっぽい。
こんな用語があるかわからないが、配列テンソル(array tensor)とも呼べる
ベクトル
$ (1, 2, 3)
[1.1, 2.2, 3.3]
rank: 1
shape: (3)
行列
$ \begin{pmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{pmatrix}
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
rank: 2
shape: (3, 4)
型で考えると何がパラメータかを少し理解しやすい? 下記は比較的素朴な型定義。
code:lean
-- 各軸の長さShape
def Shape (rank : Nat) := Vector Nat rank
-- テンソルの型定義
def Tensor (rank : Nat) (dims : Shape rank) (α : Type) : Type :=
-- 実装は省略
dimsは値によって変化する型(依存型)。これで定義されたその都度、型が適切なものになる。 TensorFlowのドキュメントは豊富な図があるのでイメージを固めるなら見ると良い
PhysLeanのテンソル
PhysLean
Mathlibのテンソル
Mathlib
確認用
Q. テンソルの階数(rank)は何か
Q. テンソルの形状(Shape)は何か
Q. ベクトルのrankとShape
Q. [1.1, 2.2, 3.3]のrankとshape
Q. [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]のrankとshape
関連
参考
メモ
直交変換