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

溫馨提示×

溫馨提示×

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

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

pytorch自定義初始化權重的方法

發布時間:2020-09-10 10:04:55 來源:腳本之家 閱讀:475 作者:goodxin_ie 欄目:開發技術

在常見的pytorch代碼中,我們見到的初始化方式都是調用init類對每層所有參數進行初始化。但是,有時我們有些特殊需求,比如用某一層的權重取優化其它層,或者手動指定某些權重的初始值。

核心思想就是構造和該層權重同一尺寸的矩陣去對該層權重賦值。但是,值得注意的是,pytorch中各層權重的數據類型是nn.Parameter,而不是Tensor或者Variable。

import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
 
# 第一一個卷積層,我們可以看到它的權值是隨機初始化的
w=torch.nn.Conv2d(2,2,3,padding=1)
print(w.weight)
 
 
# 第一種方法
print("1.使用另一個Conv層的權值")
q=torch.nn.Conv2d(2,2,3,padding=1) # 假設q代表一個訓練好的卷積層
print(q.weight) # 可以看到q的權重和w是不同的
w.weight=q.weight # 把一個Conv層的權重賦值給另一個Conv層
print(w.weight)
 
# 第二種方法
print("2.使用來自Tensor的權值")
ones=torch.Tensor(np.ones([2,2,3,3])) # 先創建一個自定義權值的Tensor,這里為了方便將所有權值設為1
w.weight=torch.nn.Parameter(ones) # 把Tensor的值作為權值賦值給Conv層,這里需要先轉為torch.nn.Parameter類型,否則將報錯
print(w.weight)

附:Variable和Parameter的區別

Parameter 是torch.autograd.Variable的一個字類,常被用于Module的參數。例如權重和偏置。

Parameters和Modules一起使用的時候會有一些特殊的屬性。parameters賦值給Module的屬性的時候,它會被自動加到Module的參數列表中,即會出現在Parameter()迭代器中。將Varaible賦給Module的時候沒有這樣的屬性。這可以在nn.Module的實現中詳細看一下。這樣做是為了保存模型的時候只保存權重偏置參數,不保存節點值。所以復寫Variable加以區分。

另外一個不同是parameter不能設置volatile,而且require_grad默認設置為true。Varaible默認設置為False.

參數:

parameter.data 得到tensor數據

parameter.requires_grad 默認為True, BP過程中會求導

Parameter一般是在Modules中作為權重和偏置,自動加入參數列表,可以進行保存恢復。和Variable具有相同的運算。

我們可以這樣簡單區分,在計算圖中,數據(包括輸入數據和計算過程中產生的feature map等)時variable類型,該類型不會被保存到模型中。 網絡的權重是parameter類型,在計算過程中會被更新,將會被保存到模型中。

以上這篇pytorch自定義初始化權重的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

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

AI

柘城县| 鄂托克旗| 蓬莱市| 宝兴县| 万年县| 普兰店市| 滁州市| 蒲江县| 纳雍县| 屏边| 咸阳市| 溧水县| 保定市| 邻水| 东城区| 潜江市| 莎车县| 兴业县| 广平县| 库车县| 霍林郭勒市| 革吉县| 渭源县| 阿拉善盟| 云和县| 亳州市| 灵山县| 蓝田县| 南川市| 孝昌县| 颍上县| 五家渠市| 响水县| 焉耆| 磐石市| 和平区| 玛曲县| 汉寿县| 绥化市| 左贡县| 博湖县|