好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > pytorch單維篩選 相乘的案例

pytorch單維篩選 相乘的案例

熱門標簽:看懂地圖標注方法 蘇州人工外呼系統軟件 京華圖書館地圖標注 打印谷歌地圖標注 電話機器人貸款詐騙 電話外呼系統招商代理 佛山通用400電話申請 廣東旅游地圖標注 淮安呼叫中心外呼系統如何

m需要和篩選的結果維度相同

>0.5運行的結果與原來維度相同,結果是 0 1,0代不符合,1代表符合。

import torch
m=torch.Tensor([0.1,0.2,0.3]).cuda()
iou=torch.Tensor([0.5,0.6,0.7])
x= m * ((iou > 0.5).type(torch.cuda.FloatTensor))
print(x)

下面是把第一條與第二條變成了2:

import torch
m=torch.Tensor([0.1,0.2,0.3]).cuda()
iou=torch.Tensor([0.5,0.6,0.7])
a=iou > 0.5
m[[0,1,1]]=2
print(m)

下面的結果:0.2與0.3改為了2

import torch
m=torch.Tensor([0.1,0.2,0.3]).cuda()
iou=torch.Tensor([0.5,0.6,0.7])
a=iou > 0.5
m[a]=2
print(m)

補充:torch.Tensor的4種乘法

torch.Tensor有4種常見的乘法:*, torch.mul, torch.mm, torch.matmul. 本文拋磚引玉,簡單敘述一下這4種乘法的區別,具體使用還是要參照官方文檔。

點乘

a與b做*乘法,原則是如果a與b的size不同,則以某種方式將a或b進行復制,使得復制后的a和b的size相同,然后再將a和b做element-wise的乘法。

下面以*標量和*一維向量為例展示上述過程。

* 標量

Tensor與標量k做*乘法的結果是Tensor的每個元素乘以k(相當于把k復制成與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與行向量做*乘法的結果是每列乘以行向量對應列的值(相當于把行向量的行復制,成為與lhs維度相同的Tensor). 注意此時要求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與列向量做*乘法的結果是每行乘以列向量對應行的值(相當于把列向量的列復制,成為與lhs維度相同的Tensor). 注意此時要求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.]])

* 矩陣

經Arsmart在評論區提醒,增補一個矩陣 * 矩陣的例子,感謝Arsmart的熱心評論!

如果兩個二維矩陣A與B做點積A * B,則要求A與B的維度完全相同,即A的行數=B的行數,A的列數=B的列數

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

broadcast

點積是broadcast的。broadcast是torch的一個概念,簡單理解就是在一定的規則下允許高維Tensor和低維Tensor之間的運算。broadcast的概念稍顯復雜,在此不做展開,可以參考官方文檔關于broadcast的介紹. 在torch.matmul里會有關于broadcast的應用的一個簡單的例子。

這里舉一個點積broadcast的例子。在例子中,a是二維Tensor,b是三維Tensor,但是a的維度與b的后兩位相同,那么a和b仍然可以做點積,點積結果是一個和b維度一樣的三維Tensor,運算規則是:若c = a * b, 則c[i,*,*] = a * b[i, *, *],即沿著b的第0維做二維Tensor點積,或者可以理解為運算前將a沿著b的第0維也進行了expand操作,即a = a.expand(b.size()); a * b。

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

其實,上面提到的二維Tensor點積標量、二維Tensor點積行向量,都是發生在高維向量和低維向量之間的,也可以看作是broadcast.

torch.mul

官方文檔關于torch.mul的介紹. 用法與*乘法相同,也是element-wise的乘法,也是支持broadcast的。

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

乘標量

>>> 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.]])

乘矩陣

例1:二維矩陣 mul 二維矩陣

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

例2:二維矩陣 mul 三維矩陣(broadcast)

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

torch.mm

官方文檔關于torch.mm的介紹. 數學里的矩陣乘法,要求兩個Tensor的維度滿足矩陣乘法的要求.

例子:

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

torch.matmul

官方文檔關于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

以上這篇pytorch單維篩選 相乘的案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PyTorch 對應點相乘、矩陣相乘實例
  • 使用pytorch 篩選出一定范圍的值
  • 在PyTorch中Tensor的查找和篩選例子

標簽:湖州 畢節 駐馬店 股票 中山 呼和浩特 江蘇 衡水

巨人網絡通訊聲明:本文標題《pytorch單維篩選 相乘的案例》,本文關鍵詞  pytorch,單維,篩選,相乘,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch單維篩選 相乘的案例》相關的同類信息!
  • 本頁收集關于pytorch單維篩選 相乘的案例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 中国女人特级毛片| 日本视频www色在线观看| 色惰日本人哺乳奶水视频网站| 师生乱淫小说| 《守望人妻》波多野结衣| 男人边摸边吃奶边做视频叫床 | 又粗又长又爽| 宝贝乖h合欢调教玩具| 日本女优名字| 爱你九周半在线观看影片| 好大好硬?用力?深一点古代| 麻豆国产AV国片精品理伦片观看| 性xxxx尼泊尔娇小| 午夜天堂精品久久久久91色爱| 国产丨熟女丨国产熟√| 主人对尿奴憋尿惩罚| 波多野结衣成人国产在线| 美女露下体| 女的被?到爽的羞羞动态图| 色费女人18女人毛片免费视频| 老师我想要(h)| 窑子开张了(H)by吃肉肉长高高| Korean BJ #自慰 #韩国| 武则天一级淫片免费看| 一级丰满老熟女毛片免费观看| 国产看午夜精品理论片| 韩国午夜影院| 国产特黄三级三级三级 | 诱人的丝袜韩国电影| 男女一级毛片免费视频看| 国产黄色在线视频| 蹭蹭嗯啊h女女互慰女h| wwwxxx国产| 5060一级毛片午夜免费看果冻| 中国小伙子gaysex七ube| 大胸美女被揉胸gif图邪恶| 肉感巨凥AV视频社区在线| 国内不卡1区2区| 男女91视频| 上嘴唇薄下嘴唇厚的女人好不好| 揉我奶?啊?嗯高潮皇宫|