この記事は、torch.Tensor クラスのインスタンスを「だんごを袋で包んだものを入れた箱」と捉えて各メソッド・関数を理解する記事シリーズ「個包装だんごとしてみる torch.Tensor」の、「約束」「記事索引」「操作索引」をまとめたものです。「操作索引」はチートシートとしても利用できます。
約束
この記事シリーズではテンソルのことを以下のように捉えます。
- 0 階のテンソル
x.shape == ()(スカラー) は、箱に入っていないだんごです。 - 1 階のテンソル
x.shape == (a,)は、a 個入りだんごの箱です。 - 2 階のテンソル
x.shape == (b, a)は、b 袋の a 個入りだんごの箱です。 - 3 階のテンソル
x.shape == (c, b, a)は、c 袋の b 袋の a 個入りだんごの箱です。
なので、r 階のテンソル (r ≧ 2) において、だんごは r - 1 重に袋に包まれています。
袋のことを外側から袋 0 、袋 1 、...、 袋 r - 2 と呼ぶことにします。
記事索引
- #1. x.mean と x.unsqueeze とブロードキャスト可能
- #2. torch.cat と torch.stack と x.repeat と x.unfold
- #3. 「だんごを選り好みする」torch.take と torch.take_along_dim と torch.index_select と torch.gather
操作索引
📕 は公式ドキュメント、🍡 はシリーズの記事へのリンクです。
1箱のだんごへの操作
- 「袋 / だんごを代表的な袋 / だんごにまとめる」
-
「袋 / だんごをさらに個包装する」
x.unsqueeze(dim)📕 🍡 -
「袋 / だんごを繰り返す」
x.repeat(l, m, n, ...)📕 🍡 -
「各だんごを横に続くだんごたちとセットにした袋に置き換える」
x.unfold(dim, size, step)📕 🍡 ― ここで「横に続くだんご」とは、「次の袋 dim の同じ位置のだんご (dim = r - 1 なら単に次のだんご)」の意味です。 - 「だんごを選り好みする」 (インデクスで指定した袋 / だんごのみの箱にする) 1
2箱以上のだんごへの操作
- 「2箱以上をくっつける」
-
torch.take,torch.index_select,torch.gatherは 1 箱のテンソルへの操作ゆえにtorch.Tensorのメソッドとしても用意されていますが、ここでは関数としての呼び方を記述・関数としてのドキュメントにリンクしています。 ↩