Pytorch详细教程——10.Flatten, Reshape, And Squeeze Explained
10. Flatten, Reshape, And Squeeze Explained - Tensors For Deep Learning With PyTorch
我們開始用tensor進行簡單操作
對于tensor的操作主要有四種
最后這個len(t.shape)代表知道t的秩
先把t.shape變成tensor類,再用prod求tensor 的數量,也就是包含12個分量
或者用這個特定 的函數方法,這個numel就是number element的縮寫
張量的重塑操作:只改變形狀,不會變張量的數量,只要重塑的形狀乘積是12就可以了。
在下面這些例子中我們用兩個因子使秩保持在2,但是如果我們使用三個元素,我們可以改變秩
我們可以通過squeezing(壓縮)和unsqueezing(解壓縮)它們
squeezing是壓縮一個向量可以移除所有長度為1的軸,而解壓縮一個張量則是增加一個長度為1的維度,這些函數允許我們擴大或者縮小張量的秩
flatten一個tensor意味著除去所有的軸,只保留一個,它創造了一個單軸的張量,它包含了張量的元素,所以本質上是把一個張量拉平,我們創建了一個一維數組,它包含了張量的所有標量分量。
一個flatten操作是當我們從一個卷積層過度到一個全連接層時必須在神經網絡中發生的操作,我們從卷積層獲得輸出,它以輸出通道的形式給我們
我們把這些通道變平成一個單一的一維數組
當我們建立 CNN的時候,我們會看到這一點
因為輸入的張量是任何形狀的,我們通過-1來表示重塑函數的第二個參數,在pytorch中-1會告訴reshape函數,根據一個張量中的包含的其他值和元素的個數來求出值應該是多少(可以理解為占位符?),因為t有12個元素,這個被重塑的函數能夠計算出第二個軸的長度是12個,以確保一個張量中的元素空間足夠大
這個flatten后的結果
實際上可以通過重塑方法可以實現flatten操作的另一種方法,就是t.reshape(-1)
張量的拼接操作
我們可以使用Pytorch的cat函數來組合兩個張量來做到這一點,就兩個張量的形狀而言,我們計算他們的方式會影響輸出張量結果的形狀。
dim=0是按照軸為0,也就是橫著排列
dim=1是按照軸為1,也就是豎著排列
總結
以上是生活随笔為你收集整理的Pytorch详细教程——10.Flatten, Reshape, And Squeeze Explained的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手把手教你理解圣杯布局和双飞翼布局
- 下一篇: 编码的故事