長久以來,張量和其中維度的概念把我搞的暈頭轉向。
一維的張量是數組,二維的張量是矩陣,這也頗有道理。
可是給一個二維張量,讓我算出它每一行的和,應該用 sum(dim=0) 仍是 sum(dim=1)? 這個問題還得讓我想個一下子。
更別說四維的張量是什麼,一百維的張量又是什麼,這種問題了,我不知道,想一想就頭大。
可是直到把張量當作一棵樹,許多問題就迎刃而解~數組
以下圖所示,分別表示三種不一樣形狀的張量:
3d
基本規律是:blog
張量以某個維度進行運算,就是:im
以 shape 爲 [1, 2, 2] 的張量t 舉例說明:d3
最終張量的shape是 [1, 2]總結
第0維的節點只有一個,因此不用進行兄弟節點之間的合併,天然也不會有重疊的葉子節點,因此就不用運算,只須要刪除第0維便可。
最終張量的shape是 [2, 2]數據
刪掉的剛好是最後一層葉子節點,數據上移到新的葉子節點中。
最終張量的shape是 [1, 2]db
給張量增長一個維度等價於給樹增長一層。
給張量刪除一個維度等價於給樹刪除一層。
可是,增刪的維度是有限制的:維度必須爲1。img
示例1
移動
示例2
將張量當作一個樹形結構能在某種程度更加直觀的理解張量的概念及其相關運算。