class Model(torch.nn.Module): def __init__(self): super(Model, self).__init__() self.conv1 = torch.nn.Sequential(torch.nn.Conv2d(1, 4, kernel_size=5, stride=1,padding=0), torch.nn.MaxPool2d(stride=4, kernel_size=4)) self.dense = torch.nn.Sequential(torch.nn.Linear(6 * 6 * 4, 33), torch.nn.ReLU(), torch.nn.Linear(33, 10)) def forward(self, x): x = self.conv1(x) x = x.view(-1, 6 * 6 * 4) #把卷積池化獲得的向量平鋪開 x = self.dense(x) return x
conv :卷積層(2d就是二維平面的)ide
kernel_size 卷積核大小函數
stride 每次移動的步長spa
padding 四周填充的大小,注意是四周因此在算下一層的向量維度時要將padding 乘以 2code
maxpool2d 二維平面的池化層blog
dense:全連接層it
Linear 一層神經元 輸入維數 輸出維數class
激活函數移動
輸出層,10分類di
forward 函數裏的view(-1,n)就是把卷積池化獲得的2維向量展開成1維的,便於傳入全鏈接層view