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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

PyTorch 学习笔记(四):权值初始化的十种方法

發(fā)布時(shí)間:2023/11/28 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyTorch 学习笔记(四):权值初始化的十种方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

pytorch在torch.nn.init中提供了常用的初始化方法函數(shù),這里簡(jiǎn)單介紹,方便查詢使用。

介紹分兩部分:

1. Xavier,kaiming系列;

2. 其他方法分布

?

Xavier初始化方法,論文在《Understanding the difficulty of training deep feedforward neural networks》

公式推導(dǎo)是從“方差一致性”出發(fā),初始化的分布有均勻分布和正態(tài)分布兩種。

1. Xavier均勻分布

torch.nn.init.xavier_uniform_(tensor, gain=1)

xavier初始化方法中服從均勻分布U(?a,a) ,分布的參數(shù)a = gain * sqrt(6/fan_in+fan_out),

這里有一個(gè)gain,增益的大小是依據(jù)激活函數(shù)類型來(lái)設(shè)定

eg:nn.init.xavier_uniform_(w, gain=nn.init.calculate_gain('relu'))

PS:上述初始化方法,也稱為Glorot initialization

?

2. Xavier正態(tài)分布

torch.nn.init.xavier_normal_(tensor,?gain=1)

xavier初始化方法中服從正態(tài)分布,

mean=0,std = gain * sqrt(2/fan_in + fan_out)

?

kaiming初始化方法,論文在《 Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification》,公式推導(dǎo)同樣從“方差一致性”出法,kaiming是針對(duì)xavier初始化方法在relu這一類激活函數(shù)表現(xiàn)不佳而提出的改進(jìn),詳細(xì)可以參看論文。

?

3. kaiming均勻分布

torch.nn.init.kaiming_uniform_(tensor,?a=0,?mode='fan_in',?nonlinearity='leaky_relu')

此為均勻分布,U~(-bound, bound), bound = sqrt(6/(1+a^2)*fan_in)

其中,a為激活函數(shù)的負(fù)半軸的斜率,relu是0

mode- 可選為fan_in 或 fan_out, fan_in使正向傳播時(shí),方差一致; fan_out使反向傳播時(shí),方差一致

nonlinearity- 可選 relu 和 leaky_relu ,默認(rèn)值為 。 leaky_relu

nn.init.kaiming_uniform_(w, mode='fan_in', nonlinearity='relu')

?

4. kaiming正態(tài)分布

torch.nn.init.kaiming_normal_(tensor,?a=0,?mode='fan_in',?nonlinearity='leaky_relu')

此為0均值的正態(tài)分布,N~ (0,std),其中std = sqrt(2/(1+a^2)*fan_in)

其中,a為激活函數(shù)的負(fù)半軸的斜率,relu是0

mode- 可選為fan_in 或 fan_out, fan_in使正向傳播時(shí),方差一致;fan_out使反向傳播時(shí),方差一致

nonlinearity- 可選 relu 和 leaky_relu ,默認(rèn)值為 。 leaky_relu

nn.init.kaiming_normal_(w, mode='fan_out', nonlinearity='relu')

2.其他

?

5. 均勻分布初始化

torch.nn.init.uniform_(tensor,?a=0,?b=1)

使值服從均勻分布U(a,b)

?

6. 正態(tài)分布初始化

torch.nn.init.normal_(tensor,?mean=0,?std=1)

使值服從正態(tài)分布N(mean, std),默認(rèn)值為0,1

?

7. 常數(shù)初始化

torch.nn.init.constant_(tensor,?val)

使值為常數(shù)val nn.init.constant_(w, 0.3)

?

8. 單位矩陣初始化

torch.nn.init.eye_(tensor)

將二維tensor初始化為單位矩陣(the identity matrix)

?

9. 正交初始化

torch.nn.init.orthogonal_(tensor,?gain=1)

使得tensor是正交的,論文:Exact solutions to the nonlinear dynamics of learning in deep linear neural networks” - Saxe, A. et al. (2013)

?

10. 稀疏初始化

torch.nn.init.sparse_(tensor,?sparsity,?std=0.01)

從正態(tài)分布N~(0. std)中進(jìn)行稀疏化,使每一個(gè)column有一部分為0

sparsity- 每一個(gè)column稀疏的比例,即為0的比例

nn.init.sparse_(w, sparsity=0.1)

?

11. 計(jì)算增益

torch.nn.init.calculate_gain(nonlinearity,?param=None)

?

?

總結(jié)

以上是生活随笔為你收集整理的PyTorch 学习笔记(四):权值初始化的十种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。