pytorch的乘法

參考自:csdn
torch.Tensor的4種乘法
torch.Tensor有4種常見的乘法:*, torch.mul, torch.mm, torch.matmul. 本文拋磚引玉蚜厉,簡單敘述一下這4種乘法的區(qū)別弟翘,具體使用還是要參照官方文檔耙饰。

點乘
a與b做*乘法,原則是如果a與b的size不同玉组,則以某種方式將a或b進行復(fù)制耍目,使得復(fù)制后的a和b的size相同房交,然后再將a和b做element-wise的乘法帜篇。

下面以標(biāo)量和一維向量為例展示上述過程糙捺。

  • 標(biāo)量
    Tensor與標(biāo)量k做*乘法的結(jié)果是Tensor的每個元素乘以k(相當(dāng)于把k復(fù)制成與lhs大小相同,元素全為k的Tensor).
>>> a = torch.ones(3,4)
>>> a
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
>>> a * 2
tensor([[2., 2., 2., 2.],
        [2., 2., 2., 2.],
        [2., 2., 2., 2.]])
  • 一維向量
    Tensor與行向量做*乘法的結(jié)果是每列乘以行向量對應(yīng)列的值(相當(dāng)于把行向量的行復(fù)制笙隙,成為與lhs維度相同的Tensor).
>>> a = torch.ones(3,4)
>>> a
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
>>> b = torch.Tensor([1,2,3,4])
>>> b
tensor([1., 2., 3., 4.])
>>> a * b
tensor([[1., 2., 3., 4.],
        [1., 2., 3., 4.],
        [1., 2., 3., 4.]])

Tensor與列向量做*乘法的結(jié)果是每行乘以列向量對應(yīng)行的值(相當(dāng)于把列向量的列復(fù)制洪灯,成為與lhs維度相同的Tensor).

>>> a = torch.ones(3,4)
>>> a
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
>>> b = torch.Tensor([1,2,3]).reshape((3,1))
>>> b
tensor([[1.],
        [2.],
        [3.]])
>>> a * b
tensor([[1., 1., 1., 1.],
        [2., 2., 2., 2.],
        [3., 3., 3., 3.]])

torch.mul
官方文檔關(guān)于torch.mul的介紹. 用法與*乘法相同。

兩者都是broadcast的竟痰。broadcast是torch的一個概念签钩,個人理解是為了便利高維(3維以上)矩陣運算。broadcast的概念稍顯復(fù)雜坏快,在此不做展開铅檩,可以參考官方文檔關(guān)于broadcast的介紹. 在torch.matmul里會有關(guān)于broadcast的應(yīng)用的一個簡單的例子。

下面是3個torch.mul的例子.

乘標(biāo)量

>>> a = torch.ones(3,4)
>>> a
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
>>> a * 2
tensor([[2., 2., 2., 2.],
        [2., 2., 2., 2.],
        [2., 2., 2., 2.]])

乘行向量

>>> a = torch.ones(3,4)
>>> a
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
>>> b = torch.Tensor([1,2,3,4])
>>> b
tensor([1., 2., 3., 4.])
>>> torch.mul(a, b)
tensor([[1., 2., 3., 4.],
        [1., 2., 3., 4.],
        [1., 2., 3., 4.]])

乘列向量

>>> a = torch.ones(3,4)
>>> a
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
>>> b = torch.Tensor([1,2,3]).reshape((3,1))
>>> b
tensor([[1.],
        [2.],
        [3.]])
>>> torch.mul(a, b)
tensor([[1., 1., 1., 1.],
        [2., 2., 2., 2.],
        [3., 3., 3., 3.]])

torch.mm
官方文檔關(guān)于torch.mm的介紹. 數(shù)學(xué)里的矩陣乘法莽鸿,要求兩個Tensor的維度滿足矩陣乘法的要求.

例子:

>>> a = torch.ones(3,4)
>>> b = torch.ones(4,2)
>>> torch.mm(a, b)
tensor([[4., 4.],
        [4., 4.],
        [4., 4.]])

torch.matmul
官方文檔關(guān)于torch.matmul的介紹. torch.mm的broadcast版本.

例子:

>>> a = torch.ones(3,4)
>>> b = torch.ones(5,4,2)
>>> torch.matmul(a, b)
tensor([[[4., 4.],
         [4., 4.],
         [4., 4.]],

        [[4., 4.],
         [4., 4.],
         [4., 4.]],

        [[4., 4.],
         [4., 4.],
         [4., 4.]],

        [[4., 4.],
         [4., 4.],
         [4., 4.]],

        [[4., 4.],
         [4., 4.],
         [4., 4.]]])

同樣的a和b昧旨,使用torch.mm相乘會報錯

>>> torch.mm(a, b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: matrices expected, got 2D, 3D tensors at /pytorch/aten/src/TH/generic/THTensorMath.cpp:2065
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市富拗,隨后出現(xiàn)的幾起案子臼予,更是在濱河造成了極大的恐慌,老刑警劉巖啃沪,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粘拾,死亡現(xiàn)場離奇詭異,居然都是意外死亡创千,警方通過查閱死者的電腦和手機缰雇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來追驴,“玉大人械哟,你說我怎么就攤上這事〉钛” “怎么了暇咆?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丙曙。 經(jīng)常有香客問我爸业,道長,這世上最難降的妖魔是什么亏镰? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任扯旷,我火速辦了婚禮,結(jié)果婚禮上索抓,老公的妹妹穿的比我還像新娘钧忽。我一直安慰自己毯炮,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布耸黑。 她就那樣靜靜地躺著桃煎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪崎坊。 梳的紋絲不亂的頭發(fā)上备禀,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音奈揍,去河邊找鬼曲尸。 笑死,一個胖子當(dāng)著我的面吹牛男翰,可吹牛的內(nèi)容都是我干的另患。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼蛾绎,長吁一口氣:“原來是場噩夢啊……” “哼昆箕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起租冠,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤鹏倘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后顽爹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纤泵,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年镜粤,在試婚紗的時候發(fā)現(xiàn)自己被綠了捏题。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡肉渴,死狀恐怖公荧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情同规,我是刑警寧澤循狰,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站券勺,受9級特大地震影響绪钥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朱灿,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一昧识、第九天 我趴在偏房一處隱蔽的房頂上張望钠四。 院中可真熱鬧盗扒,春花似錦跪楞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至褥影,卻和暖如春池户,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凡怎。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工校焦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人统倒。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓寨典,卻偏偏與公主長得像,于是被迫代替她去往敵國和親房匆。 傳聞我的和親對象是個殘疾皇子耸成,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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

  • 一、深度學(xué)習(xí)框架 Caffe Caffe2 Chainer CNTK(Microsoft Cognitive To...
    DDuncan閱讀 2,467評論 0 0
  • pytorch torch包 torch 包含了多維張量的數(shù)據(jù)結(jié)構(gòu)以及基于其上的多種數(shù)學(xué)操作浴鸿。 函數(shù) torch....
    NJUST江波閱讀 1,007評論 0 0
  • Torch的運算主要分成三個模塊:(1)Tensor的成員函數(shù)井氢;(2)torch全局封裝函數(shù);(3)torch.n...
    楊強AT南京閱讀 487評論 0 1
  • 本篇內(nèi)容參考官方文檔自己總結(jié)而來僅供自學(xué)自查岳链,詳細(xì)需求請查閱官方文檔花竞。 數(shù)據(jù)類型 張量(Tnsor) 什么是張量?...
    Zimix閱讀 7,579評論 0 3
  • 一場春雪過后宠页,氣溫驟然回升左胞,有種春回大地的感覺。風(fēng)和日麗举户,陽光明媚烤宙,2017年的春天真的來了~ 時間真快,四季...
    槿瓊閱讀 130評論 0 0