Pytorch中的廣播機(jī)制(Broadcast)

1. Pytorch中的廣播機(jī)制

如果一個Pytorch運(yùn)算支持廣播的話峡眶,那么就意味著傳給這個運(yùn)算的參數(shù)會被自動擴(kuò)張成相同的size瘦黑,在不復(fù)制數(shù)據(jù)的情況下就能進(jìn)行運(yùn)算京革,整個過程可以做到避免無用的復(fù)制奇唤,達(dá)到更高效的運(yùn)算。
廣播機(jī)制實(shí)際上是在運(yùn)算過程中匹摇,去處理兩個形狀不同向量的一種手段咬扇。
pytorch中的廣播機(jī)制和numpy中的廣播機(jī)制一樣, 因?yàn)槎际菙?shù)組的廣播機(jī)制。

2. 廣播機(jī)制的理解

以數(shù)組A和數(shù)組B的相加為例, 其余數(shù)學(xué)運(yùn)算同理
核心:如果相加的兩個數(shù)組的shape不同, 就會觸發(fā)廣播機(jī)制:
1)程序會自動執(zhí)行操作使得A.shape==B.shape廊勃;
2)對應(yīng)位置進(jìn)行相加運(yùn)算懈贺,結(jié)果的shape是:A.shape和B.shape對應(yīng)位置的最大值,比如:A.shape=(1,9,4),B.shape=(15,1,4),那么A+B的shape是(15,9,4)

3. 兩個張量進(jìn)行廣播機(jī)制的條件

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

#像下面這種情況下就不行坡垫,因?yàn)閤不滿足這個條件梭灿。
x=torch.empty((0,))
y=torch.empty(2,2)

3.2 按從右往左順序看兩個張量的每一個維度,x和y每個對應(yīng)著的兩個維度都需要能夠匹配上冰悠。什么情況下算是匹配上了堡妒?滿足下面的條件就可以:

  • a.這兩個維度的大小相等
  • b. 某個維度 一個張量有,一個張量沒有
  • c.某個維度 一個張量有溉卓,一個張量也有但大小是1
    如下舉例:
x=torch.empty(5,3,4,1)
y=torch.empty( 3,1,1)

如上面代碼中皮迟,首先將兩個張量維度向右靠齊,從右往左看桑寨,兩個張量第四維大小相等伏尼,都為1,滿足上面條件a;第三個維度大小不相等西疤,但第二個張量第三維大小為1烦粒,滿足上面條件b;第二個維度大小相等都為3,滿足上面條件a;第一個維度第一個張量有代赁,第二個張量沒有扰她,滿足上面條件b,因此兩個張量每個維度都符合上面廣播條件芭碍,因此可以進(jìn)行廣播徒役。
兩個張量維度從右往左看,如果出現(xiàn)兩個張量在某個維度位置上面窖壕,維度大小不相等忧勿,且兩個維度大小沒有一個是1,那么這兩個張量一定不能進(jìn)行廣播瞻讽。

4 當(dāng)兩個張量滿足可廣播條件后鸳吸,具體怎么進(jìn)行廣播

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對應(yīng)維度不等的位置,把size為1的維度會被廣播得和對應(yīng)維度一樣大呕乎,比如y中0維的1會變成5积担,y中2維的1會變成4,最后兩個張量的維度大小變成一樣猬仁,然后再進(jìn)行張量運(yùn)算帝璧,轉(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. 從空間上理解廣播機(jī)制

5.1 一維張量進(jìn)行廣播逐虚,b被自動廣播得和a一樣的維度大小聋溜,完成了張量相乘運(yùn)算谆膳,如下圖所示叭爱。

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

輸出結(jié)果如下:
(tensor([1, 2, 3]),
 torch.Size([3]),
 tensor([2]),
 torch.Size([1]),
 tensor([2, 4, 6]),
 torch.Size([3]))

5.1 二維張量進(jìn)行廣播,b被自動廣播得和a一樣的維度大小漱病,完成了張量相加運(yùn)算买雾,如下圖所示。

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

輸出結(jié)果如下:
(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]))

上面二維張量和一維張量相加運(yùn)算進(jìn)行廣播過程為:a的形狀是(4,1)杨帽,b的形狀是(3)漓穿,如果a和b要匹配上,第一步給b新添一個維度注盈,我們有:a的形狀是(4,1)晃危,b的形狀是(1,3);第二步二者各自把為1的維度進(jìn)行廣播老客,就如上圖中那樣進(jìn)行廣播僚饭,最后運(yùn)算完成。

參考知識文章

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胧砰,一起剝皮案震驚了整個濱河市鳍鸵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌尉间,老刑警劉巖偿乖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異哲嘲,居然都是意外死亡贪薪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門眠副,熙熙樓的掌柜王于貴愁眉苦臉地迎上來画切,“玉大人,你說我怎么就攤上這事侦啸〔弁伲” “怎么了丧枪?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長庞萍。 經(jīng)常有香客問我拧烦,道長,這世上最難降的妖魔是什么钝计? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任恋博,我火速辦了婚禮,結(jié)果婚禮上私恬,老公的妹妹穿的比我還像新娘债沮。我一直安慰自己,他們只是感情好本鸣,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布疫衩。 她就那樣靜靜地躺著,像睡著了一般荣德。 火紅的嫁衣襯著肌膚如雪闷煤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天涮瞻,我揣著相機(jī)與錄音鲤拿,去河邊找鬼。 笑死署咽,一個胖子當(dāng)著我的面吹牛近顷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宁否,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼窒升,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了家淤?” 一聲冷哼從身側(cè)響起异剥,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎絮重,沒想到半個月后冤寿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡青伤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年督怜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狠角。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡号杠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情姨蟋,我是刑警寧澤屉凯,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站眼溶,受9級特大地震影響悠砚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜堂飞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一灌旧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绰筛,春花似錦枢泰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至薄榛,卻和暖如春讳窟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敞恋。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谋右,地道東北人硬猫。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像改执,于是被迫代替她去往敵國和親啸蜜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容