Pytorch教程(十五):element-wise、Broadcasting
我們先創建了兩個秩為2,形狀為 2×22 \times 22×2的張量,這意味著我們有兩個軸,他們都有兩個元素的長度,第一個軸的元素是數組,第二個軸的元素是數字。
兩個張量必須具有相同數量的元素才能執行一個element-wise操作。也就是說兩個張量必須具有相同的形狀才能執行一個元素操作,具有相同的形狀意味著每一個對應的軸上有相同數量的軸,并且他們的長度相同。
在相應位置的每一對元素被加在一起,產生一個具有相同形狀的新張量,所以加法是一個element-wise運算。所有其他的算數運算,比如減法、乘法、除法也是元素運算。
我們通常用張量看到的運算是使用標量值的算數運算,而下面這些例子打破了我們建立的規則,即元素的操作需要在張量有相同的形狀的前提下進行,所有的標量值都是零階張量,這就意味著他們沒有形狀,我們的張量t1是一個2×22 \times 22×2的二階張量,那么這時如何調整的呢?
可能想到的第一個解決方案是,操作只是簡單地使用單個標量值,并對一個張量中的每個元素進行操作,這種邏輯是可行的,然而這有點誤導人,它打破了一個更普遍的情況,即我們沒有使用標量的情況,要以不同的方式來思考這些操作,我們需要引入張量廣播的概念。
廣播定義了在元素操作過程中如何處理不同形狀的張量。
我們重新考慮一下t1+2運算,標量張量被擴展到張量t1的形狀,然后進行元素運算,通過對numpy函數的廣播,我們可以看到在標量值上的廣播是什么樣子:
下面看一個稍微復雜一點的情況:
即使這些張量有不同的shape,但依然可以相加,這正是得益于廣播機制,較低的秩向量t2將通過廣播進行轉換,以匹配更高階張量t1的形狀,而元素將像往常一樣執行。我們可以使用廣播到numpy函數來檢查廣播轉換,然后運行操作:
可以看出t2被廣播成了shape為2×22 \times 22×2的tensor,這樣t1 + t2就是相同shape之間的操作。而這就是torch內部自動幫我們做的,我們無需手動執行廣播。
總結
以上是生活随笔為你收集整理的Pytorch教程(十五):element-wise、Broadcasting的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3000元以内投影仪推荐什么牌子?
- 下一篇: Pytorch教程(十六):Fashio