Deep learning Pytorch CNN未实现错误
这是我的网络课程:Deep learning Pytorch CNN未实现错误,deep-learning,pytorch,Deep Learning,Pytorch,这是我的网络课程: class network(nn.Module): def __init__(self): super(network, self).__init__() self.conv1 = nn.Conv2d(3, 32, 3, stride=1, padding=1, padding_mode='zeros') self.conv2 = nn.Conv2d(32, 32, 3, stride=1, padding=1, pad
class network(nn.Module):
def __init__(self):
super(network, self).__init__()
self.conv1 = nn.Conv2d(3, 32, 3, stride=1, padding=1, padding_mode='zeros')
self.conv2 = nn.Conv2d(32, 32, 3, stride=1, padding=1, padding_mode='zeros')
self.conv3 = nn.Conv2d(32, 64, 3, stride=1, padding=1, padding_mode='zeros')
self.conv4 = nn.Conv2d(64, 64, 3, stride=1, padding=1, padding_mode='zeros')
self.maxpool1 = nn.MaxPool2d(2) # 14 * 14
self.conv5 = nn.Conv2d(64, 128, 3, stride=1, padding=1, padding_mode='zeros')
self.conv6 = nn.Conv2d(128, 128, 3, stride=1, padding=1, padding_mode='zeros')
self.conv7 = nn.Conv2d(128, 256, 3, stride=1, padding=1, padding_mode='zeros')
self.conv8 = nn.Conv2d(256, 256, 3, stride=1, padding=1, padding_mode='zeros')
self.maxpool2 = nn.MaxPool2d(2) # 7 * 7
self.gap = nn.AvgPool2d(7)
self.fc1 = nn.Linear(256 * 1 * 1, 256)
self.fc2 = nn.Linear(256, len(classes))
def foward(self, x):
x = torch.nn.ReLU(self.conv1(x))
x = torch.nn.ReLU(self.conv2(x))
x = torch.nn.ReLU(self.conv3(x))
x = torch.nn.ReLU(self.conv4(x))
x = self.maxpool1(x)
x = torch.nn.ReLU(self.conv5(x))
x = torch.nn.ReLU(self.conv6(x))
x = torch.nn.ReLU(self.conv7(x))
x = torch.nn.ReLU(self.conv8(x))
x = self.maxpool2(x)
x = self.gap(x)
x = torch.nn.ReLU(self.fc1(x))
x = torch.nn.Softmax(self.fc2(x))
print(f"output shape: {x.shape}")
return x
Traceback (most recent call last):
File "D:/Files/works/0+Development/Python/0+DNN/0+torch_dc/tutorial_train_save.py", line 198, in <module>
output = network(X)
File "C:\Users\bolero\anaconda3\lib\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "C:\Users\bolero\anaconda3\lib\site-packages\torch\nn\modules\module.py", line 175, in _forward_unimplemented
raise NotImplementedError
NotImplementedError
主代码
network = network()
print(network)
loss = nn.CrossEntropyLoss().to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-5)
for epoch in range(nb_epochs + 1):
iter = -1
for batch_index, sample in enumerate(dataloader):
x_train, y_train = sample
# Upload Dataset in GPU device
X = x_train.to(device, dtype=torch.float)
Y = y_train.to(device, dtype=torch.long)
optimizer.zero_grad()
output = network(X)
cost = loss(output, torch.max(Y, 1)[1])
cost.backward()
optimizer.step()
iter = iter + 1
if iter % 100 == 99 or iter == dataloader.__len__():
print(f"Epoch {epoch + 1}/{nb_epochs} "
f"Iteration {iter + 1}/{dataloader.__len__()} "
f"Loss {str(float(cost))[0:7]}")
print('Finished Training')
PATH = './cifar10_vgg.pth'
torch.save(model.state_dict(), PATH)
并显示错误:
class network(nn.Module):
def __init__(self):
super(network, self).__init__()
self.conv1 = nn.Conv2d(3, 32, 3, stride=1, padding=1, padding_mode='zeros')
self.conv2 = nn.Conv2d(32, 32, 3, stride=1, padding=1, padding_mode='zeros')
self.conv3 = nn.Conv2d(32, 64, 3, stride=1, padding=1, padding_mode='zeros')
self.conv4 = nn.Conv2d(64, 64, 3, stride=1, padding=1, padding_mode='zeros')
self.maxpool1 = nn.MaxPool2d(2) # 14 * 14
self.conv5 = nn.Conv2d(64, 128, 3, stride=1, padding=1, padding_mode='zeros')
self.conv6 = nn.Conv2d(128, 128, 3, stride=1, padding=1, padding_mode='zeros')
self.conv7 = nn.Conv2d(128, 256, 3, stride=1, padding=1, padding_mode='zeros')
self.conv8 = nn.Conv2d(256, 256, 3, stride=1, padding=1, padding_mode='zeros')
self.maxpool2 = nn.MaxPool2d(2) # 7 * 7
self.gap = nn.AvgPool2d(7)
self.fc1 = nn.Linear(256 * 1 * 1, 256)
self.fc2 = nn.Linear(256, len(classes))
def foward(self, x):
x = torch.nn.ReLU(self.conv1(x))
x = torch.nn.ReLU(self.conv2(x))
x = torch.nn.ReLU(self.conv3(x))
x = torch.nn.ReLU(self.conv4(x))
x = self.maxpool1(x)
x = torch.nn.ReLU(self.conv5(x))
x = torch.nn.ReLU(self.conv6(x))
x = torch.nn.ReLU(self.conv7(x))
x = torch.nn.ReLU(self.conv8(x))
x = self.maxpool2(x)
x = self.gap(x)
x = torch.nn.ReLU(self.fc1(x))
x = torch.nn.Softmax(self.fc2(x))
print(f"output shape: {x.shape}")
return x
Traceback (most recent call last):
File "D:/Files/works/0+Development/Python/0+DNN/0+torch_dc/tutorial_train_save.py", line 198, in <module>
output = network(X)
File "C:\Users\bolero\anaconda3\lib\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "C:\Users\bolero\anaconda3\lib\site-packages\torch\nn\modules\module.py", line 175, in _forward_unimplemented
raise NotImplementedError
NotImplementedError
回溯(最近一次呼叫最后一次):
文件“D:/Files/works/0+Development/Python/0+DNN/0+torch\u dc/tutorial\u train\u save.py”,第198行,在
输出=网络(X)
文件“C:\Users\bolero\anaconda3\lib\site packages\torch\nn\modules\module.py”,第727行,在调用impl中
结果=自我转发(*输入,**kwargs)
文件“C:\Users\bolero\anaconda3\lib\site packages\torch\nn\modules\module.py”,第175行,未实现
引发未实现的错误
未实现错误
我刚刚用Pytorch实现了一个非常简单的网络,但它不起作用
我分别编写了“init”函数和forward函数
我观看了pytorch教程,并在该教程中编写了类似的代码
我所知道的是,在编写网络类时,我应该继承nn.Module并创建init和forward函数
我知道init函数定义图层类型,forward函数定义实际操作部分
如果有人知道这个问题,请发表评论。注意
def foward(self,x):
中的输入错误,它应该是def forward(self,x):
函数名中似乎有一个类型:forward
。