由于研究關系需要自己手動給卷積層初始化權值,但是好像博客上提到的相關文章比較少(大部分都只提到使用nn.init里的按照一定分布初始化方法),自己參考了下Pytorch的官方文檔,發現有兩種方法吧。
所以mark下。
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)
效果預覽

以上這篇Pytorch卷積層手動初始化權值的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。