這個實驗用到的資料集是mnist資料集,維度是1×28×28
import torch.nn as nn
class cnn(nn.module):
def __init__(self):
super(cnn, self).__init__()
# 卷積層
self.conv1 = nn.sequential(
in_channels= 1, # 的高度
out_channels= 16, # 輸出的高度:filter的個數
kernel_size =5, # filter的畫素點是5×5
stride = 1, # 每次掃瞄跳的範圍
padding = 2 # 補全邊緣畫素點
)# 卷積層
nn.relu(),
)# 線性層
self.out = nn.linear(32*7*7, 10)
# 展平操作
def forward(self, x):
print(x.size()) # 檢視模型的輸入,tensorboardx input_to_model
x = self.conv1(x)
print(x.size())
print(x.size())
# 展平操作, -1表示自適應
print(x.size())
output = self.out(x)
return output
cnn = cnn()
print(cnn)
cnn(
(conv1): sequential(
(0): conv2d(1, 16, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
(1): relu()
(2): maxpool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=false)
) (conv2): sequential(
(0): conv2d(16, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
(1): relu()
(2): maxpool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=false)
) (out): linear(in_features=1568, out_features=10, bias=true)
)
for name, parameter in cnn.named_parameters():
print(name, ':', parameter.size())
輸出:
conv1.0.weight : torch.size([16, 1, 5, 5])
conv1.0.bias : torch.size([16])
conv2.0.weight : torch.size([32, 16, 5, 5])
conv2.0.bias : torch.size([32])
out.weight : torch.size([10, 1568])
out.bias : torch.size([10])
pytorch 模型部分引數的載入
如果對預訓練模型的結構進行了一些改動,在訓練的開始前希望載入未改動部分的引數,如將resnet18的第一層卷積層conv1的輸入由3通道改為6通道的new conv1,將分類層fc的1000類輸出改為2類輸出的new fc,注意 要改一下名字與原來的不同。匯入模型 mynet resnet 然後就載...
pytorch 模型部分引數的載入
如果對預訓練模型的結構進行了一些改動,在訓練的開始前希望載入未改動部分的引數,如將resnet18的第一層卷積層conv1的輸入由3通道改為6通道的new conv1,將分類層fc的1000類輸出改為2類輸出的new fc,注意 要改一下名字與原來的不同。匯入模型 mynet resnet18 然後...
額外引數 Pytorch獲取模型引數情況的方法
分享人工智慧技術乾貨,專注深度學習與計算機視覺領域!相較於tensorflow,pytorch一開始就是以動態圖構建神經網路圖的,其獲取模型引數的方法也比較容易,既可以根據其內建介面自己寫 獲取模型引數情況,也可以借助第三方庫來獲取模型引數情況,下面,就讓我們一起來了解pytorch獲取模型引數情況...