知交6 2019-10-07 19:01 采纳率: 0%
浏览 5025

pytorch 中 写入class ConvNet(nn.Module): 语句之后 出现错误NameError: name 'ConvNet' is not defined 这是怎么回事?

```import torch
import torch.nn as nn
from torch.autograd import Variable
import torch.optim as optim
import torch.nn.functional as F

import torchvision.datasets as dsets
import torchvision.transforms as transforms

import matplotlib.pyplot as plt
import numpy as np
#%matplotlib inline
image_size=28
num_classes=10
num_epochs=20
batch_size=64

train_dataset=dsets.MNIST(root='./data',
train=True,
transform=transforms.ToTensor(),
download=True)
test_dataset=dsets.MNIST(root='./data',
train=False,
transform=transforms.ToTensor())
train_loader=torch.utils.data.DataLoader(dataset=train_dataset,
batch_size=batch_size,
shuffle=True)
indices=range(len(test_dataset))
indices_val=indices[:5000]
indices_test=indices[5000:]

sampler_val=torch.utils.data.sampler.SubsetRandomSampler(indices_val)
sampler_test=torch.utils.data.sampler.SubsetRandomSampler(indices_test)
validation_loader=torch.utils.data.DataLoader(dataset=test_dataset,
batch_size=batch_size,
shuffle=False,
sampler=sampler_val
)
test_loader=torch.utils.data.DataLoader(dataset=test_dataset,
batch_size=batch_size,
shuffle=False,
sampler=sampler_test
)
idx=110 #随机选取的
muteimg=train_dataset[idx][0].numpy()
plt.imshow(muteimg[0,...])
plt.show()
print('标签是:',train_dataset[idx][1])

depth=[4,8]
class ConvNet(nn.Module):
def init(self):
super(ConvNet,self).__init__()
self.conv1=nn.Conv2d(1,4,5,padding=2)
self.pool=nn.MaxPool2d(2,2)
self.conv2=nn.Conv2d(depth[0],depth[1],5,padding=2)
self.fc1=nn.Linear(image_size//4*image_size//4*depth[1],512)
self.fc2=nn.Linear(512,num_classes)
def forward(self, x):
x=self.conv1(x)
x=F.relu(x)
x=self.pool(x)
x=self.conv2(x)
x=F.relu(x)
x=self.pool(x)
x=x.view(-1,image_size//4*image_size//4*depth[1])
x=F.relu(self.fc1(x))
x=F.dropout(x,training=self.training)
x=self.fc2(x)
x=F.log_softmax(x,dim=1)
return x
def retrieve_features(self,x):
feature_map1=F.relu(self.conv1(x))
x=self.pool(feature_map1)
feature_map2=F.relu(self.conv2(x))
return (feature_map1,feature_map2)

net=ConvNet()
criterion=nn.CrossEntropyLoss()
optimizer=optim.SGD(net.parameters(),lr=0.001,momentum=0.9)
record=[]
weights=[]
for epoch in range(num_epochs):
    train_rights=[]
    for batch_idx,(data,target) in enumerate (train_loader):
        data,target=Variable(data),Variable(target)
        net.train()
        output=net(data)
        loss=criterion(output,target)
        optimizer.zero_grad()
        optimizer.step()
        right=rightness(output,target)
        train_rights.append(right)

        if batch_idx % 100 ==0:
            net.eval()
            val_rights=[]
            for(data,target) in validation_loader:
                data,target=Variable(data),Variable(target)
                output=net(data)
                right=rightness(output,target)
                val_rights.append(right)
                train_r=(sum([tup[o] for tup in train_rights]),sum([tup[1] for tup in train_rights]))
                val_r=(sum([tup[0] for tup in val_rights]),sum([tup[1] for tup in val_rights]))

                record.append((100 - 100.*train_r[0]/train_r[1],100-100.*val_r[0]/val_r[1]))
                weights.append([net.conv1.weight.data.clone(),net.conv1.bias.data.clone(),
                                net.conv2.weight.data.clone(),net.conv2.bias.data.clone()])

net.eval()
vals=[]

for dara,target in test_loader:
    data,targrt=Variable(data,volatile=True),Variable(target)
    output = net(data)
    val=rightness(output,target)
    vals.append(val)

rights=(sum([tup[0] for tup in vals]),sum([tup[1] for tup in vals]))
rights_rate=1.0*rights[0]/rights[1]
right_rate

plt.figure(figsize=(10,7))
plt.plot(record)
plt.xlabel('Steps')
plt.ylabel('Error rate')

```pytorch 中  写入class ConvNet(nn.Module): 语句之后  出现错误NameError: name 'ConvNet' is not defined 这是怎么回事
  • 写回答

1条回答

  • threenewbee 2019-10-07 21:18
    关注

    看看是不是别的地方报错,特别是有重名的包、变量、对象等,具体要看代码

    评论

报告相同问题?

悬赏问题

  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入