日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytorch中x.norm(p=2,dim=1,keepdim=True)的理解

發布時間:2023/12/15 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytorch中x.norm(p=2,dim=1,keepdim=True)的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼:x.norm(p=2,dim=1,keepdim=True)

功能:求指定維度上的范數。

函數原型:【返回輸入張量給定維dim?上每行的p范數】

? ? ? ? ? ? ? ? ?torch.norm(input, p, dim, out=None,keepdim=False) → Tensor

? ? ? ? ?注:范數求法:【對N個數據求p范數】

? ? ? ? ? ? ? ? ??

函數參數

input (Tensor) – 輸入張量

p (float) – 范數計算中的冪指數值

dim (int) – 縮減的維度,dim=0是對0維度上的一個向量求范數,返回結果數量等于其列的個數,也就是說有多少個0維度的向? ? ? ? ? ? ? ? ? ? ? ? ? 量,?將得到多少個范數。dim=1同理。

out (Tensor, optional) – 結果張量

keepdim(bool)– 保持輸出的維度 。當keepdim=False時,輸出比輸入少一個維度(就是指定的dim求范數的維度)。而? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? keepdim=True時,輸出與輸入維度相同,僅僅是輸出在求范數的維度上元素個數變為1。這也是為什么有時? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 我們把參數中的dim稱為縮減的維度,因為norm運算之后,此維度或者消失或者元素個數變為1。

?

例子說明

已知一個3×4矩陣,如下:

tensor([[ 1.,? 2.,? 3.,? 4.],

??????? [ 2.,? 4.,? 6.,? 8.],

??????? [ 3.,? 6.,? 9., 12.]])

1)dim參數,分別對其行和列分別求2范數:

inputs1 = torch.norm(inputs, p=2, dim=1, keepdim=True)

print(inputs1)

inputs2 = torch.norm(inputs, p=2, dim=0, keepdim=True)

print(inputs2)

結果分別為:

tensor([[ 5.4772],

??????? [10.9545],

??????? [16.4317]])

tensor([[ 3.7417,? 7.4833, 11.2250, 14.9666]])

2)keepdim參數

inputs3 = inputs.norm(p=2, dim=1, keepdim=False)

print(inputs3)

inputs3為:

tensor([ 5.4772, 10.9545, 16.4317])

?

輸出inputs1和inputs3的shape:

print(inputs1.shape)

print(inputs3.shape)

torch.Size([3, 1])

torch.Size([3])

可以看到inputs3少了一維,其實就是dim=1(求范數)那一維(列)少了,因為從4列變成1列,就是3行中求每一行的2范數,就剩1列了,不保持這一維不會對數據產生影響。或者也可以這么理解,就是數據每個數據有沒有用[]擴起來。

即:

keepdim = True,用[]擴起來;

keepdim = False,不用[]括起來;

?

【不寫keepdim,則默認不保留dim的那個維度】:

inputs4 = torch.norm(inputs, p=2, dim=1)

print(inputs4)

tensor([ 5.4772, 10.9545, 16.4317])

?

【不寫dim,則計算Tensor中所有元素的2范數】:

inputs5 = torch.norm(inputs, p=2)

print(inputs5)

tensor(20.4939)

等價于這句話:

inputs6 = inputs.pow(2).sum().sqrt()

print(inputs6)

tensor(20.4939)

總之,norm操作后dim這一維變為1或者消失。

總結

以上是生活随笔為你收集整理的pytorch中x.norm(p=2,dim=1,keepdim=True)的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。