網(wǎng)站首頁 編程語言 正文
關(guān)于F.normalize計(jì)算理解
動(dòng)機(jī)
最近多次看到該方法出現(xiàn),于是準(zhǔn)備了解一下,搜了后發(fā)現(xiàn)原來是所謂的L2 norm計(jì)算
簡(jiǎn)介
函數(shù)定義
torch.nn.functional.normalize(input,?p=2.0,?dim=1,?eps=1e-12,?out=None)
功能:將某一個(gè)維度除以那個(gè)維度對(duì)應(yīng)的范數(shù)(默認(rèn)是2范數(shù))。
使用:
F.normalize(data,?p=2/1,?dim=0/1/-1)?將某一個(gè)維度除以那個(gè)維度對(duì)應(yīng)的范數(shù)(默認(rèn)是2范數(shù))
-
data
:輸入的數(shù)據(jù)(tensor) -
p
:L2/L1_norm運(yùn)算 -
dim
:0表示按列操作,則每列都是除以該列下平方和的開方;1表示按行操作,則每行都是除以該行下所有元素平方和的開方
舉例
?
最后dim=0,是1/根號(hào)下1平方+1平方,2/根號(hào)下2平方+2平方,3/根號(hào)下3平方+3平方,所以都是0.7071
Pytorch中normalize應(yīng)用
torch.nn.functional.normalize(input, p=2, dim=1, eps=1e-12, out=None)
其中,p表示范數(shù)(這里是2范數(shù)),dim表示計(jì)算范數(shù)的維度(默認(rèn)為1),eps是為了防止分母為0;
pytorch中的normalize函數(shù)本質(zhì)上就是針對(duì)某個(gè)維度進(jìn)行歸一化,公式為:
方便記憶,二維矩陣中, dim=1表示在行內(nèi)進(jìn)行歸一化,dim=0表示在列內(nèi)進(jìn)行歸一化。
在使用過程中,對(duì)dim的理解不夠到位,來三個(gè)代碼實(shí)驗(yàn)一下。
示例1:dim=1
a = F.softmax(torch.randn((1, 3, 4)), 1) b = F.normalize(a)
輸出:
// a
?tensor([[[0.2621, 0.2830, 0.3758, 0.0260],
? ? ? ? ?[0.3634, 0.3750, 0.5382, 0.1085],
? ? ? ? ?[0.3744, 0.3420, 0.0860, 0.8655]]])
// b
b: tensor([[[0.4489, 0.4870, 0.5676, 0.0298],
? ? ? ? ?[0.6224, 0.6454, 0.8130, 0.1243],
? ? ? ? ?[0.6412, 0.5885, 0.1299, 0.9918]]])
代碼中針對(duì)維度1進(jìn)行歸一化。維度1有3個(gè)通道,具體的計(jì)算細(xì)節(jié)為
示例2:dim=2
a = F.softmax(torch.randn((1, 3, 4)), 1) c = F.normalize(b, dim=2)
// a tensor([[[0.0861, 0.1087, 0.0518, 0.3551], ? ? ? ? ?[0.8067, 0.4128, 0.0592, 0.2884], ? ? ? ? ?[0.1072, 0.4785, 0.8890, 0.3565]]]) // c tensor([[[0.2237, 0.2825, 0.1347, 0.9230], ? ? ? ? ?[0.8467, 0.4332, 0.0621, 0.3027], ? ? ? ? ?[0.0997, 0.4447, 0.8262, 0.3313]]])
這里作用的是維度2,可以認(rèn)為維度2有4個(gè)通道,計(jì)算細(xì)節(jié)為:
示例3:dim=0
a = F.softmax(torch.randn((1, 3, 4)), 1) c = F.normalize(b, dim=0)
// a tensor([[[0.0861, 0.1087, 0.0518, 0.3551], ? ? ? ? ?[0.8067, 0.4128, 0.0592, 0.2884], ? ? ? ? ?[0.1072, 0.4785, 0.8890, 0.3565]]]) // c tensor([[[1., 1., 1., 1.], ? ? ? ? ?[1., 1., 1., 1.], ? ? ? ? ?[1., 1., 1., 1.]]])
這里作用的是維度0;維度0上只有1個(gè)通道,因此歸一化之后全為1,即
總結(jié)
原文鏈接:https://jingliu.blog.csdn.net/article/details/118115681
相關(guān)推薦
- 2022-07-01 python神經(jīng)網(wǎng)絡(luò)Densenet模型復(fù)現(xiàn)詳解_python
- 2022-03-20 詳解C語言的預(yù)處理效果_C 語言
- 2022-08-26 .net任務(wù)調(diào)度框架FluentScheduler簡(jiǎn)介_實(shí)用技巧
- 2022-11-07 react-native?實(shí)現(xiàn)漸變色背景過程_React
- 2022-06-11 MSSQL基本語法及實(shí)例操作語句_MsSql
- 2022-10-17 VSCode安裝Django插件后實(shí)現(xiàn)html語法提示的方法步驟_python
- 2023-07-30 el-table自定義合并行或列
- 2022-05-22 LazyCaptcha自定義隨機(jī)驗(yàn)證碼和字體的示例詳解_實(shí)用技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支