@[TOC](print(net) only prints CNN’s name not structure)
问题
按照打印网络的语句,虽然不报错,却没有打印出来网络结构,经过一番排查之后,发现了问题出在了初始化。
解决办法
_init_替换成__init__前后两个下划线,写法不规范导致的错误。
class Vggnet(nn.Module):
#def _init_(self):
def _init_(self):####_init_替换成__init__前后两个下划线
super(Vggnet, self)._init_() ####_init_替换成__init__前后两个下划线
self.conv = nn.Sequential(nn.Conv2d(3,64,3,padding = 1),
nn.ReLU(),
nn.Conv2d(64,64,3),
nn.MaxPool2d(2, 2),#
nn.Conv2d(64,128,3,padding = 1),
nn.ReLU(),
nn.Conv2d(128,128,3,padding = 1),
nn.ReLU(),
nn.MaxPool2d(2, 2),#
nn.Conv2d(128,256,3,padding = 1),
nn.ReLU(),
nn.Conv2d(256,256,3,padding = 1),
nn.ReLU(),
nn.Conv2d(256,256,3,padding = 1),
nn.ReLU(),
nn.MaxPool2d(2, 2),##
nn.Conv2d(256,512,3,padding = 1),
nn.ReLU(),
nn.Conv2d(512,512,3,padding = 1),
nn.ReLU(),
nn.Conv2d(512,512,3,padding = 1),
nn.ReLU(),
nn.MaxPool2d(2, 2),##
nn.Conv2d(512,512,3,padding = 1),
nn.ReLU(),
nn.Conv2d(512,512,3,padding = 1),
nn.ReLU(),
nn.Conv2d(512,512,3,padding = 1),
nn.ReLU(),
nn.MaxPool2d(2, 2))
self.fc = nn.Sequential(nn.Linear(7*7*512,4096),
nn.ReLU(),
nn.Dropout(),
nn.Linear(4096,4096),
nn.ReLU(),
nn.Dropout(),
nn.Linear(4096,5))
def forward(self, x):
x = self.conv(x)
x = x.view(x.size(0), -1)
x = self.fc(x)
#output = F.softmax(x, dim=1)
return x
net1= Vggnet()
print(net1)
==========================================
错误结果展示:
Vggnet()##只显示网络名称,不显示具体结构。