中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

對Pytorch神經網絡初始化kaiming分布詳解

發布時間:2020-09-27 21:31:34 來源:腳本之家 閱讀:317 作者:winycg 欄目:開發技術

函數的增益值

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

提供了對非線性函數增益值的計算。

對Pytorch神經網絡初始化kaiming分布詳解

增益值gain是一個比例值,來調控輸入數量級和輸出數量級之間的關系。

fan_in和fan_out

pytorch計算fan_in和fan_out的源碼


def _calculate_fan_in_and_fan_out(tensor):
 dimensions = tensor.ndimension()
 if dimensions < 2:
  raise ValueError("Fan in and fan out can not be computed 
  for tensor with fewer than 2 dimensions")

 if dimensions == 2: # Linear
  fan_in = tensor.size(1)
  fan_out = tensor.size(0)
 else:
  num_input_fmaps = tensor.size(1)
  num_output_fmaps = tensor.size(0)
  receptive_field_size = 1
  if tensor.dim() > 2:
   receptive_field_size = tensor[0][0].numel()
  fan_in = num_input_fmaps * receptive_field_size
  fan_out = num_output_fmaps * receptive_field_size

 return fan_in, fan_out

對Pytorch神經網絡初始化kaiming分布詳解

xavier分布

xavier分布解析:https://prateekvjoshi.com/2016/03/29/understanding-xavier-initialization-in-deep-neural-networks/

假設使用的是sigmoid函數。當權重值(值指的是絕對值)過小,輸入值每經過網絡層,方差都會減少,每一層的加權和很小,在sigmoid函數0附件的區域相當于線性函數,失去了DNN的非線性性。

當權重的值過大,輸入值經過每一層后方差會迅速上升,每層的輸出值將會很大,此時每層的梯度將會趨近于0.

xavier初始化可以使得輸入值x x x<math><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math>x方差經過網絡層后的輸出值y y y<math><semantics><mrow><mi>y</mi></mrow><annotation encoding="application/x-tex">y</annotation></semantics></math>y方差不變。

(1)xavier的均勻分布

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

對Pytorch神經網絡初始化kaiming分布詳解

也稱為Glorot initialization。

>>> w = torch.empty(3, 5)
>>> nn.init.xavier_uniform_(w, gain=nn.init.calculate_gain('relu'))

(2) xavier正態分布

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

對Pytorch神經網絡初始化kaiming分布詳解

也稱為Glorot initialization。

kaiming分布

Xavier在tanh中表現的很好,但在Relu激活函數中表現的很差,所何凱明提出了針對于relu的初始化方法。pytorch默認使用kaiming正態分布初始化卷積層參數。

(1) kaiming均勻分布

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

對Pytorch神經網絡初始化kaiming分布詳解

也被稱為 He initialization。

a – the negative slope of the rectifier used after this layer (0 for ReLU by default).激活函數的負斜率,

mode – either ‘fan_in' (default) or ‘fan_out'. Choosing fan_in preserves the magnitude of the variance of the weights in the forward pass. Choosing fan_out preserves the magnitudes in the backwards

pass.默認為fan_in模式,fan_in可以保持前向傳播的權重方差的數量級,fan_out可以保持反向傳播的權重方差的數量級。

>>> w = torch.empty(3, 5)
>>> nn.init.kaiming_uniform_(w, mode='fan_in', nonlinearity='relu')

(2) kaiming正態分布

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

對Pytorch神經網絡初始化kaiming分布詳解

也被稱為 He initialization。

 >>> w = torch.empty(3, 5)
>>> nn.init.kaiming_normal_(w, mode='fan_out', nonlinearity='relu')

以上這篇對Pytorch神經網絡初始化kaiming分布詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尚志市| 镇远县| 闽清县| 双桥区| 班戈县| 西乌珠穆沁旗| 太和县| 无锡市| 威宁| 荆州市| 咸丰县| 北宁市| 庆安县| 泸西县| 汝州市| 无极县| 衡阳市| 库尔勒市| 红安县| 加查县| 文化| 黄浦区| 武夷山市| 城固县| 华阴市| 杨浦区| 枞阳县| 应城市| 大连市| 大港区| 沙雅县| 巴东县| 芦溪县| 沁源县| 名山县| 宜阳县| 务川| 屏南县| 札达县| 枞阳县| 白朗县|