基於pytorch的深度模型引數分別優化與凍結

2021-10-10 15:39:28 字數 1194 閱讀 2913

在深度學習的模型的訓練的過程中,經常會遇到需要對不同的模型引數設定不同的學習策略,比如使用不同的學習率,設定權重衰減等,在pytorch框架中的設定相對來說是比較簡單的。

#coding:utf-8

import torch

from torchvision import models

#模型初始化

model = models.resnet50(pretrained=true)

#根據需要,進行引數分組(權重衰減設定)

pg0, pg1, pg2 = , , # optimizer parameter groups

for k, v in model.named_modules():

if hasattr(v, 'bias') and isinstance(v.bias, nn.parameter):

if isinstance(v, nn.batchnorm2d):

elif hasattr(v, 'weight') and isinstance(v.weight, nn.parameter):

#優化器設定

optimizer = optim.sgd(pg0, lr=0.001, momentum=0.0005, nesterov=true)

optimizer.add_param_group()

optimizer.add_param_group() # add pg2 (biases)

from torchvision import models

model = models.resnet18()

# 凍結layer4以前的所有層,只訓練layer4與全連線層(根據類別需自定義)

no_freeze = ['layer4','fc'] # parameter names to freeze (full or partial)

for k, v in model.named_parameters():

v.requires_grad = true # train all layers

if not any(x in k for x in no_freeze):

print('freezing %s' % k)

v.requires_grad = false

參考:yolov5原始碼庫中的train.py檔案中

Pytorch深度學習實踐 線性模型

在看劉二大人的pytorch教程,寫個筆記記錄一下,如果有什麼問題歡迎一起 呀 傳送門 劉二大人的pytorch深度學習實踐 線性模型 首先是線性模型的定義 給定由d個屬性描述對的示例x x x x 其中 是第i個屬性上的取值,線性模型試圖學得乙個通過屬性的線性組合來進行 的函式,即 轉換成向量形式...

Pytorch 基於混和精度的模型加速

這篇部落格是在pytorch中基於apex使用混合精度加速的乙個偏工程的描述,原理層面的解釋並不是這篇部落格的目的,不過在參考部分提供了非常有價值的資料,可以進一步研究。乙個關鍵原則 僅僅在權重更新的時候使用fp32,耗時的前向和後向運算都使用fp16 其中的乙個技巧是 在反向計算開始前,將dlos...

深度模型調參知識總結

深度模型調參知識總結 先保證資料質量再去調參 什麼是高質量的資料?高質量資料集應該包括以下特徵 怎樣獲取高質量的資料?二 調參原則 首先分析自己模型的弱點,而不是隨意地改進,我們需要根據視覺化模型誤差 表現極差的場景 以及效能引數來確定模型問題。隨意做改進反而適得其反,會成比例的增加訓練成本,而回報...