婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Pytorch實現網絡部分層的固定不進行回傳更新問題及思路詳解

Pytorch實現網絡部分層的固定不進行回傳更新問題及思路詳解

熱門標簽:ai電銷機器人源碼 地圖標注審核表 西藏房產智能外呼系統要多少錢 宿遷星美防封電銷卡 百度地圖標注沒有了 外呼并發線路 ai電話機器人哪里好 湛江智能外呼系統廠家 長沙高頻外呼系統原理是什么

實際問題

Pytorch有的時候需要對一些層的參數進行固定,這些層不進行參數的梯度更新

問題解決思路

那么從理論上來說就有兩種辦法

  • 優化器初始化的時候不包含這些不想被更新的參數,這樣他們會進行梯度回傳,但是不會被更新
  • 將這些不會被更新的參數梯度歸零,或者不計算它們的梯度

思路就是利用tensorrequires_grad,每一個tensor都有自己的requires_grad成員,值只能為TrueFalse。我們對不需要參與訓練的參數的requires_grad設置為False

在optim參數模型參數中過濾掉requires_grad為False的參數。
還是以上面搭建的簡單網絡為例,我們固定第一個卷積層的參數,訓練其他層的所有參數。

代碼實現

class Net(nn.Module):
    def __init__(self):
        super(Net,self).__init__()
        self.conv1 = nn.Conv2d(3,32,3)
        self.conv2 = nn.Conv2d(32,24,3)
        self.prelu = nn.PReLU()
        for m in self.modules():
            if isinstance(m,nn.Conv2d):
                nn.init.xavier_normal_(m.weight.data)
                nn.init.constant_(m.bias.data,0)
            if isinstance(m,nn.Linear):
                m.weight.data.normal_(0.01,0,1)
                m.bias.data.zero_()
    def forward(self, input):
        out = self.conv1(input)
        out = self.conv2(out)
        out = self.prelu(out)
        return out

遍歷第一層的參數,然后為其設置requires_grad

model = Net()
for name, p in model.named_parameters():
    if name.startswith('conv1'):
        p.requires_grad = False
        
optimizer = torch.optim.Adam(filter(lambda x: x.requires_grad is not False ,model.parameters()),lr= 0.2)

為了驗證一下我們的設置是否正確,我們分別看看model中的參數的requires_gradoptim中的params_group()

for p in model.parameters():
    print(p.requires_grad)

能看出優化器僅僅對requires_gradTrue的參數進行迭代優化。

LAST 參考文獻

Pytorch中,動態調整學習率、不同層設置不同學習率和固定某些層訓練的方法_我的博客有點東西-CSDN博客

到此這篇關于Pytorch實現網絡部分層的固定不進行回傳更新的文章就介紹到這了,更多相關Pytorch網絡部分層內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PyTorch實現更新部分網絡,其他不更新
  • Pytorch訓練網絡過程中loss突然變為0的解決方案
  • pytorch 一行代碼查看網絡參數總量的實現
  • pytorch 網絡參數 weight bias 初始化詳解

標簽:南平 林芝 普洱 漯河 海南 寧夏 盤錦 大同

巨人網絡通訊聲明:本文標題《Pytorch實現網絡部分層的固定不進行回傳更新問題及思路詳解》,本文關鍵詞  Pytorch,實現,網絡部,分層,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Pytorch實現網絡部分層的固定不進行回傳更新問題及思路詳解》相關的同類信息!
  • 本頁收集關于Pytorch實現網絡部分層的固定不進行回傳更新問題及思路詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 怀远县| 澎湖县| 扶风县| 威远县| 泸定县| 彰武县| 永州市| 南京市| 胶南市| 定边县| 南漳县| 扶风县| 铜陵市| 兰考县| 仪陇县| 河津市| 阳朔县| 莎车县| 卢龙县| 新平| 图片| 赣州市| 阳曲县| 大化| 登封市| 桂东县| 板桥市| 邵东县| 繁昌县| 新龙县| 临清市| 读书| 桂阳县| 吐鲁番市| 罗甸县| 三原县| 岑巩县| 临泽县| 龙山县| 锡林郭勒盟| 宜丰县|