日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytorch教程(十五):element-wise、Broadcasting

發布時間:2024/9/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch教程(十五):element-wise、Broadcasting 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
t1 = torch.tensor([[1,2],[3,4] ], dtype=torch.float32) t2 = torch.tensor([[9,8],[7,6] ], dtype=torch.float32)

我們先創建了兩個秩為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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。