您好,登錄后才能下訂單哦!
這篇文章主要介紹“pytorch中的廣播語(yǔ)義是什么”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“pytorch中的廣播語(yǔ)義是什么”文章能幫助大家解決問(wèn)題。
官方文檔有這樣一個(gè)解釋?zhuān)?/strong>
In short, if a PyTorch operation supports broadcast, then its Tensor arguments can be automatically expanded to be of equal sizes (without making copies of the data).
這句話(huà)的意思大概是:簡(jiǎn)單的說(shuō),如果一個(gè)pytorch操作支持廣播,那么它的Tensor參數(shù)可以自動(dòng)的擴(kuò)展為相同的尺寸(不需要復(fù)制數(shù)據(jù))。
按照我的理解,應(yīng)該是指算法計(jì)算過(guò)程中,不同的Tensor如果size
不同,但是符合一定的規(guī)則,那么可以自動(dòng)的進(jìn)行維度擴(kuò)展,來(lái)實(shí)現(xiàn)Tensor
的計(jì)算。在維度擴(kuò)展的過(guò)程中,并不是真的把維度小的Tensor復(fù)制為和維度大的Tensor相同,因?yàn)檫@樣太浪費(fèi)內(nèi)存了。
首先來(lái)看標(biāo)準(zhǔn)的情況,兩個(gè)Tensor的size相同,則可以直接計(jì)算:
x = torch.empty((4, 2, 3)) y = torch.empty((4, 2, 3)) print((x+y).size())
輸出:
torch.Size([4, 2, 3])
但是,如果兩個(gè)Tensor
的維度并不相同,pytorch也是可以根據(jù)下面的兩個(gè)法則進(jìn)行計(jì)算:
(1)Each tensor has at least one dimension.
(2)When iterating over the dimension sizes, starting at the trailing dimension, the dimension sizes must either be equal, one of them is 1, or one of them does not exist.
每個(gè)
Tensor
至少有一個(gè)維度。迭代標(biāo)注尺寸時(shí),從后面的標(biāo)注開(kāi)始
第一個(gè)規(guī)則要求每個(gè)參與計(jì)算的Tensor
至少有一個(gè)維度,第二個(gè)規(guī)則是指在維度迭代時(shí),從最后一個(gè)維度開(kāi)始,可以有三種情況:
維度相等
其中一個(gè)維度是1
其中一個(gè)維度不存在
x = torch.empty((0, )) y = torch.empty((2, 3)) print((x + y).size())
輸出:
RuntimeError: The size of tensor a (0) must match the size of tensor b (3) at non-singleton dimension 1
這里,不滿(mǎn)足第一個(gè)規(guī)則“每個(gè)參與計(jì)算的Tensor
至少有一個(gè)維度”。
x = torch.empty(5, 2, 4, 1) y = torch.empty(3, 1, 1) print((x + y).size())
輸出:
RuntimeError: The size of tensor a (2) must match
the size of tensor b (3) at non-singleton dimension 1
這里,不滿(mǎn)足第二個(gè)規(guī)則,因?yàn)閺淖詈蟮木S度開(kāi)始迭代的過(guò)程中,倒數(shù)第三個(gè)維度:x是2,y是3。這并不符合第二條規(guī)則的三種情況,所以不能使用廣播語(yǔ)義。
x = torch.empty(5, 3, 4, 1) y = torch.empty(3, 1, 1) print((x + y).size())
輸出:
torch.Size([5, 3, 4, 1])
x是四維的,y是三維的,從最后一個(gè)維度開(kāi)始迭代:
最后一維:x是1,y是1,滿(mǎn)足規(guī)則二
倒數(shù)第二維:x是4,y是1,滿(mǎn)足規(guī)則二
倒數(shù)第三維:x是3,y是3,滿(mǎn)足規(guī)則一
倒數(shù)第四維:x是5,y是0,滿(mǎn)足規(guī)則一
關(guān)于“pytorch中的廣播語(yǔ)義是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。