欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pytorch 實現(xiàn)權(quán)重初始化

 更新時間:2019年12月31日 15:51:09   作者:idotc  
今天小編就為大家分享一篇Pytorch 實現(xiàn)權(quán)重初始化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在TensorFlow中,權(quán)重的初始化主要是在聲明張量的時候進行的。 而PyTorch則提供了另一種方法:首先應(yīng)該聲明張量,然后修改張量的權(quán)重。通過調(diào)用torch.nn.init包中的多種方法可以將權(quán)重初始化為直接訪問張量的屬性。

1、不初始化的效果

在Pytorch中,定義一個tensor,不進行初始化,打印看看結(jié)果:

w = torch.Tensor(3,4)
print (w)

可以看到這時候的初始化的數(shù)值都是隨機的,而且特別大,這對網(wǎng)絡(luò)的訓(xùn)練必定不好,最后導(dǎo)致精度提不上,甚至損失無法收斂。

2、初始化的效果

PyTorch提供了多種參數(shù)初始化函數(shù):

torch.nn.init.constant(tensor, val)
torch.nn.init.normal(tensor, mean=0, std=1)
torch.nn.init.xavier_uniform(tensor, gain=1)

等等。詳細請參考:http://pytorch.org/docs/nn.html#torch-nn-init

注意上面的初始化函數(shù)的參數(shù)tensor,雖然寫的是tensor,但是也可以是Variable類型的。而神經(jīng)網(wǎng)絡(luò)的參數(shù)類型Parameter是Variable類的子類,所以初始化函數(shù)可以直接作用于神經(jīng)網(wǎng)絡(luò)參數(shù)。實際上,我們初始化也是直接去初始化神經(jīng)網(wǎng)絡(luò)的參數(shù)。

讓我們試試效果:

w = torch.Tensor(3,4)
torch.nn.init.normal_(w)
print (w)

3、初始化神經(jīng)網(wǎng)絡(luò)的參數(shù)

對神經(jīng)網(wǎng)絡(luò)的初始化往往放在模型的__init__()函數(shù)中,如下所示:

class Net(nn.Module):

def __init__(self, block, layers, num_classes=1000):
  self.inplanes = 64
  super(Net, self).__init__()
  ***
  *** #定義自己的網(wǎng)絡(luò)層
  ***

  for m in self.modules():
    if isinstance(m, nn.Conv2d):
      n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels
      m.weight.data.normal_(0, math.sqrt(2. / n))
    elif isinstance(m, nn.BatchNorm2d):
      m.weight.data.fill_(1)
      m.bias.data.zero_()

***
*** #定義后續(xù)的函數(shù)
***

也可以采取另一種方式:

定義一個權(quán)重初始化函數(shù),如下:

def weights_init(m):
  classname = m.__class__.__name__
  if classname.find('Conv2d') != -1:
    init.xavier_normal_(m.weight.data)
    init.constant_(m.bias.data, 0.0)
  elif classname.find('Linear') != -1:
    init.xavier_normal_(m.weight.data)
    init.constant_(m.bias.data, 0.0)

在模型聲明時,調(diào)用初始化函數(shù),初始化神經(jīng)網(wǎng)絡(luò)參數(shù):

model = Net(*****)
model.apply(weights_init)

以上這篇Pytorch 實現(xiàn)權(quán)重初始化就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python urls.py的三種配置寫法實例詳解

    Python urls.py的三種配置寫法實例詳解

    這篇文章主要介紹了Python urls.py的三種配置寫法實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • python?類型轉(zhuǎn)換函數(shù)示例詳解

    python?類型轉(zhuǎn)換函數(shù)示例詳解

    這篇文章主要介紹了python?類型轉(zhuǎn)換函數(shù)示例詳解,通過float()將一個字符串或數(shù)字轉(zhuǎn)換為浮點數(shù),本文結(jié)合示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Python openpyxl 遍歷所有sheet 查找特定字符串的方法

    Python openpyxl 遍歷所有sheet 查找特定字符串的方法

    今天小編就為大家分享一篇Python openpyxl 遍歷所有sheet 查找特定字符串的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 淺談Python數(shù)學建模之數(shù)據(jù)導(dǎo)入

    淺談Python數(shù)學建模之數(shù)據(jù)導(dǎo)入

    數(shù)據(jù)導(dǎo)入是所有數(shù)模編程的第一步,比你想象的更重要。Python 語言中數(shù)據(jù)導(dǎo)入的方法很多。對于數(shù)學建模問題編程來說,選擇什么方法最好呢?答案是:沒有最好的,只有最合適的。對于不同的問題,不同的算法,以及所調(diào)用工具包的不同實現(xiàn)方法,對于數(shù)據(jù)就會有不同的要求
    2021-06-06
  • xpath無法定位tbody標簽解決方法示例

    xpath無法定位tbody標簽解決方法示例

    這篇文章主要介紹了xpath無法定位tbody標簽解決方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 關(guān)于Python 3中print函數(shù)的換行詳解

    關(guān)于Python 3中print函數(shù)的換行詳解

    最近在學習python3,發(fā)現(xiàn)了一個問題想著總結(jié)出來,所以下面這篇文章主要給大家介紹了關(guān)于Python 3中print函數(shù)換行的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對需要的朋友們具有一定的參考學習價值,感興趣的朋友們下面隨著小編來一起學習學習吧。
    2017-08-08
  • 在Python中使用AOP實現(xiàn)Redis緩存示例

    在Python中使用AOP實現(xiàn)Redis緩存示例

    本篇文章主要介紹了在Python中使用AOP實現(xiàn)Redis緩存示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Python使用MD5加密字符串示例

    Python使用MD5加密字符串示例

    這篇文章主要介紹了Python使用MD5加密字符串示例,對一些可能出現(xiàn)的錯誤點上本文也給出提醒,需要的朋友可以參考下
    2014-08-08
  • python爬蟲請求頭設(shè)置代碼

    python爬蟲請求頭設(shè)置代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于python爬蟲請求頭如何設(shè)置內(nèi)容,需要的朋友們可以學習下。
    2020-07-07
  • PyTorch使用GPU訓(xùn)練的兩種方法實例

    PyTorch使用GPU訓(xùn)練的兩種方法實例

    pytorch是一個非常優(yōu)秀的深度學習的框架,具有速度快,代碼簡潔,可讀性強的優(yōu)點,下面這篇文章主要給大家介紹了關(guān)于PyTorch使用GPU訓(xùn)練的兩種方法,需要的朋友可以參考下
    2022-05-05

最新評論