91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

python PyTorch參數初始化和Finetune

發布時間:2020-09-16 06:06:15 來源:腳本之家 閱讀:146 作者:ycszen 欄目:開發技術

前言

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

參數初始化

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

python PyTorch參數初始化和Finetune

所以我們可以進行如下操作進行初始化,當然其實有其他的方法,但是這種方法是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,為了能學習參數以及后向傳播
    m.weight.data.fill_(1)
    m.bias.data.zero_()

Finetune

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

局部微調

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

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

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

全局微調

有時候我們需要對全局都進行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是二者共有的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

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

AI

庆云县| 岱山县| 广昌县| 华坪县| 阿勒泰市| 浪卡子县| 南雄市| 金湖县| 西安市| 平阴县| 广汉市| 潞城市| 竹溪县| 勃利县| 梓潼县| 基隆市| 德惠市| 清涧县| 彭山县| 剑阁县| 清新县| 大冶市| 阳东县| 天门市| 镇原县| 永仁县| 贞丰县| 西宁市| 金堂县| 潜江市| 左权县| 商洛市| 来安县| 庄浪县| 休宁县| 西乌珠穆沁旗| 永川市| 什邡市| 依安县| 都江堰市| 朔州市|