亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python PyTorch參數(shù)初始化和Finetune

 更新時間:2018年02月11日 09:36:37   作者:ycszen  
這篇文章主要介紹了python PyTorch參數(shù)初始化和Finetune,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

這篇文章算是論壇PyTorch Forums關(guān)于參數(shù)初始化和finetune的總結(jié),也是我在寫代碼中用的算是“最佳實踐”吧。最后希望大家沒事多逛逛論壇,有很多高質(zhì)量的回答。

參數(shù)初始化

參數(shù)的初始化其實就是對參數(shù)賦值。而我們需要學習的參數(shù)其實都是Variable,它其實是對Tensor的封裝,同時提供了data,grad等借口,這就意味著我們可以直接對這些參數(shù)進行操作賦值了。這就是PyTorch簡潔高效所在。

所以我們可以進行如下操作進行初始化,當然其實有其他的方法,但是這種方法是PyTorch作者所推崇的:

def weight_init(m):
# 使用isinstance來判斷m屬于什么類型
  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,bias其實都是Variable,為了能學習參數(shù)以及后向傳播
    m.weight.data.fill_(1)
    m.bias.data.zero_()

Finetune

往往在加載了預訓練模型的參數(shù)之后,我們需要finetune模型,可以使用不同的方式finetune。

局部微調(diào)

有時候我們加載了訓練模型后,只想調(diào)節(jié)最后的幾層,其他層不訓練。其實不訓練也就意味著不進行梯度計算,PyTorch中提供的requires_grad使得對訓練的控制變得非常簡單。

model = torchvision.models.resnet18(pretrained=True)
for param in model.parameters():
  param.requires_grad = False
# 替換最后的全連接層, 改為訓練100類
# 新構(gòu)造的模塊的參數(shù)默認requires_grad為True
model.fc = nn.Linear(512, 100)

# 只優(yōu)化最后的分類層
optimizer = optim.SGD(model.fc.parameters(), lr=1e-2, momentum=0.9)

全局微調(diào)

有時候我們需要對全局都進行finetune,只不過我們希望改換過的層和其他層的學習速率不一樣,這時候我們可以把其他層和新層在optimizer中單獨賦予不同的學習速率。比如:

ignored_params = list(map(id, model.fc.parameters()))
base_params = filter(lambda p: id(p) not in ignored_params,
           model.parameters())

optimizer = torch.optim.SGD([
      {'params': base_params},
      {'params': model.fc.parameters(), 'lr': 1e-3}
      ], lr=1e-2, momentum=0.9)

其中base_params使用1e-3來訓練,model.fc.parameters使用1e-2來訓練,momentum是二者共有的。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python selenium如何設置等待時間

    Python selenium如何設置等待時間

    這篇文章主要為大家詳細介紹了Python selenium如何設置等待時間,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Python解釋器以及PyCharm的安裝教程圖文詳解

    Python解釋器以及PyCharm的安裝教程圖文詳解

    PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具。這篇文章主要介紹了Python解釋器以及PyCharm的安裝教程圖文詳解,需要的朋友可以參考下
    2020-02-02
  • Python 作圖實現(xiàn)坐標軸截斷(打斷)的效果

    Python 作圖實現(xiàn)坐標軸截斷(打斷)的效果

    這篇文章主要介紹了Python 作圖實現(xiàn)坐標軸截斷(打斷)的效果,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • python實現(xiàn)無人機航拍圖片像素坐標轉(zhuǎn)世界坐標的示例代碼

    python實現(xiàn)無人機航拍圖片像素坐標轉(zhuǎn)世界坐標的示例代碼

    已知相機參數(shù)在給定像素坐標的前提下,求世界坐標,大部分通過AI來實現(xiàn),本文給大家分享實現(xiàn)腳本,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • python二進制文件的轉(zhuǎn)譯詳解

    python二進制文件的轉(zhuǎn)譯詳解

    這篇文章主要介紹了python二進制文件的轉(zhuǎn)譯詳解的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python使用Opencv打開筆記本電腦攝像頭報錯解問題及解決

    Python使用Opencv打開筆記本電腦攝像頭報錯解問題及解決

    這篇文章主要介紹了Python使用Opencv打開筆記本電腦攝像頭報錯解問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 在jupyter notebook中使用pytorch的方法

    在jupyter notebook中使用pytorch的方法

    這篇文章主要介紹了在jupyter notebook中使用pytorch的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • python Canny邊緣檢測算法的實現(xiàn)

    python Canny邊緣檢測算法的實現(xiàn)

    這篇文章主要介紹了python Canny邊緣檢測算法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • SpringMVC和SpringBoot接收參數(shù)的幾種方式詳解

    SpringMVC和SpringBoot接收參數(shù)的幾種方式詳解

    這篇文章主要介紹了SpringMVC和SpringBoot接收參數(shù)的幾種方式詳解,Spring是分層的JavaSE/EE應用輕量級開源框架,以IoC和AOP為內(nèi)核,提供了展現(xiàn)層 Spring MVC和持久層Spring JDBC以及業(yè)務層事務管理等眾多的企業(yè)級應用技術(shù),需要的朋友可以參考下
    2023-07-07
  • pytorch之Resize()函數(shù)具體使用詳解

    pytorch之Resize()函數(shù)具體使用詳解

    這篇文章主要介紹了pytorch之Resize()函數(shù)具體使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02

最新評論