欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pytorch中的廣播機制詳解(Broadcast)

 更新時間:2023年01月03日 09:51:50   作者:cv_lhp  
這篇文章主要介紹了Pytorch中的廣播機制詳解(Broadcast),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

1. Pytorch中的廣播機制

如果一個Pytorch運算支持廣播的話,那么就意味著傳給這個運算的參數(shù)會被自動擴張成相同的size,在不復制數(shù)據(jù)的情況下就能進行運算,整個過程可以做到避免無用的復制,達到更高效的運算。

廣播機制實際上是在運算過程中,去處理兩個形狀不同向量的一種手段。

pytorch中的廣播機制和numpy中的廣播機制一樣, 因為都是數(shù)組的廣播機制。

2. 廣播機制的理解

以數(shù)組A和數(shù)組B的相加為例, 其余數(shù)學運算同理

核心:如果相加的兩個數(shù)組的shape不同, 就會觸發(fā)廣播機制:

1)程序會自動執(zhí)行操作使得A.shape==B.shape;

2)對應位置進行相加運算,結果的shape是:A.shape和B.shape對應位置的最大值,比如:A.shape=(1,9,4),B.shape=(15,1,4),那么A+B的shape是(15,9,4)

3. 兩個張量進行廣播機制的條件

3.1 兩個張量都至少有一個維度

#像下面這種情況下就不行,因為x不滿足這個條件。
x=torch.empty((0,))
y=torch.empty(2,2)

3.2 按從右往左順序看兩個張量的每一個維度,x和y每個對應著的兩個維度都需要能夠匹配上。

什么情況下算是匹配上了?滿足下面的條件就可以:

  • a.這兩個維度的大小相等
  • b. 某個維度 一個張量有,一個張量沒有
  • c.某個維度 一個張量有,一個張量也有但大小是1

如下舉例:

x=torch.empty(5,3,4,1)
y=torch.empty( 3,1,1)

如上面代碼中,首先將兩個張量維度向右靠齊,從右往左看,兩個張量第四維大小相等,都為1,滿足上面條件a;第三個維度大小不相等,但第二個張量第三維大小為1,滿足上面條件b;第二個維度大小相等都為3,滿足上面條件a;第一個維度第一個張量有,第二個張量沒有,滿足上面條件b,因此兩個張量每個維度都符合上面廣播條件,因此可以進行廣播。

兩個張量維度從右往左看,如果出現(xiàn)兩個張量在某個維度位置上面,維度大小不相等,且兩個維度大小沒有一個是1,那么這兩個張量一定不能進行廣播。

4. 當兩個張量滿足可廣播條件后

具體怎么進行廣播

x=torch.empty(5,3,4,1)
y=torch.empty( 3,1,1)

如上面代碼所示:

a. 首先第一步,將上面條件b的類型變成條件c的類型,也即是把第二個張量在缺失維度的位置上新增一個維度,維度大小為1,新增的維度如下面所示。

統(tǒng)一前:
x=torch.empty(5,3,4,1)
y=torch.empty( 3,1,1)
統(tǒng)一后:
x=torch.empty(5,3,4,1)
y=torch.empty(1,3,1,1)

b. 第二步,x、y對應維度不等的位置,把size為1的維度會被廣播得和對應維度一樣大,比如y中0維的1會變成5,y中2維的1會變成4,最后兩個張量的維度大小變成一樣,然后再進行張量運算,轉(zhuǎn)變的維度如下所示

統(tǒng)一前:
x=torch.empty(5,3,4,1)
y=torch.empty(1,3,1,1)
統(tǒng)一后:
x=torch.empty(5,3,4,1)
y=torch.empty(5,3,4,1)

5. 從空間上理解廣播機制

5.1 一維張量進行廣播,b被自動廣播得和a一樣的維度大小,完成了張量相乘運算,如下圖所示。

a = torch.tensor([1,2,3])
b = torch.tensor([2])
c = a*b
a,a.shape,b,b.shape,c,c.shape

輸出結果如下:

(tensor([1, 2, 3]),
 torch.Size([3]),
 tensor([2]),
 torch.Size([1]),
 tensor([2, 4, 6]),
 torch.Size([3]))

從空間上理解一維張量進行廣播

5.1 二維張量進行廣播,b被自動廣播得和a一樣的維度大小,完成了張量相加運算,如下圖所示。

a = torch.tensor([[0],[10],[20],[30]])
b = torch.tensor([1,2,3])
c = a+b
a,a.shape,b,b.shape,c,c.shape

輸出結果如下:

(tensor([[ 0],
         [10],
         [20],
         [30]]),
 torch.Size([4, 1]),
 tensor([1, 2, 3]),
 torch.Size([3]),
 tensor([[ 1,  2,  3],
         [11, 12, 13],
         [21, 22, 23],
         [31, 32, 33]]),
 torch.Size([4, 3]))

從空間上理解二維張量進行廣播

上面二維張量和一維張量相加運算進行廣播過程為:a的形狀是(4,1),b的形狀是(3),如果a和b要匹配上,第一步給b新添一個維度,我們有:a的形狀是(4,1),b的形狀是(1,3);第二步二者各自把為1的維度進行廣播,就如上圖中那樣進行廣播,最后運算完成。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 用Python實現(xiàn)群發(fā)郵件

    用Python實現(xiàn)群發(fā)郵件

    大家好,本篇文章主要講的是用Python實現(xiàn)群發(fā)郵件,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • python實現(xiàn)H2O中的隨機森林算法介紹及其項目實戰(zhàn)

    python實現(xiàn)H2O中的隨機森林算法介紹及其項目實戰(zhàn)

    這篇文章主要介紹了python實現(xiàn)H2O中的隨機森林算法介紹及其項目實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Python實現(xiàn)隨機游走的示例代碼

    Python實現(xiàn)隨機游走的示例代碼

    隨機游走是一個數(shù)學對象,稱為隨機或隨機過程,它描述了一條路徑,該路徑由一些數(shù)學空間上的一系列隨機步驟組成,下面我們就來學習一下Python如何實現(xiàn)隨機游走的吧
    2023-12-12
  • python解決OpenCV在讀取顯示圖片的時候閃退的問題

    python解決OpenCV在讀取顯示圖片的時候閃退的問題

    這篇文章主要介紹了python解決OpenCV在讀取顯示圖片的時候閃退的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 利用PyQT5日期控件制作一個小日歷

    利用PyQT5日期控件制作一個小日歷

    這篇文章主要介紹了利用PyQT5的日期控件制作一個小日歷,因為pyqt5已經(jīng)自帶了相關的日期控件,只需要明白如何調(diào)用再加上比較個性化的功能,這個日歷的小控件就制作完成了。需要的可以參考一下
    2022-01-01
  • Python使用tkinter實現(xiàn)搖骰子小游戲功能的代碼

    Python使用tkinter實現(xiàn)搖骰子小游戲功能的代碼

    這篇文章主要介紹了Python使用tkinter實現(xiàn)的搖骰子小游戲功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • python實現(xiàn)將兩個文件夾合并至另一個文件夾(制作數(shù)據(jù)集)

    python實現(xiàn)將兩個文件夾合并至另一個文件夾(制作數(shù)據(jù)集)

    這篇文章主要介紹了python實現(xiàn)將兩個文件夾合并至另一個文件夾(制作數(shù)據(jù)集),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python實現(xiàn)差分隱私Laplace機制詳解

    python實現(xiàn)差分隱私Laplace機制詳解

    今天小編就為大家分享一篇python實現(xiàn)差分隱私Laplace機制詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python中如何使用正則表達式的集合字符示例

    python中如何使用正則表達式的集合字符示例

    我們都知道,正則表達式可以很方便地對字符串進行匹配、查找、分割等操作,下面這篇文章主要給大家介紹了關于python中如何使用正則表達式的集合字符的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-10-10
  • Python使用MD5加密算法對字符串進行加密操作示例

    Python使用MD5加密算法對字符串進行加密操作示例

    這篇文章主要介紹了Python使用MD5加密算法對字符串進行加密操作,結合實例形式分析了Python實現(xiàn)md5加密相關操作技巧,需要的朋友可以參考下
    2018-03-03

最新評論