初学pytorch所遇的常见错误

torch.utils.data.DataLoader
报错:AttributeError: module ‘main’ has no attribute 'spec
在windows系统下出现这种情况的一种可能性是在torch.utils.data.DataLoader类中使用了num_workers参数。
解决方法是:注释掉此行代码

  • DataLoader类,该类定义在dataloader.py脚本中,该类主要作用是将自定义的数据读取类的输出或PyTorch已有的数据读取类的输入按照batch-size封装成Tensor的形式,后续只需要再包装成Variable即可作为模型的输入,因此该类有承上启下之效。只要是用Pytorch来训练模型基本都会用到该类,其地位举足轻重。

import torch
import torch.utils.data as Data
torch_dataset = Data.TensorDataset(x,y)
loader = Data.DataLoader(
dataset=torch_dataset, #数据
batch_size=BATCH_SIZE, # 批大小
shuffle=True, # 是否随机打乱顺序
#num_workers=2, # 多线程读取数据的线程数,windows用户应该注释掉这条代码
)

报错:IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number
解决方案:把 l_his.append(loss.data[0]) 更改为 l_his.append(loss.item())

 for net, opt, l_his in zip(nets, optimizers, losses_history): 
      output = net(b_x) 
      loss = loss_function(output, b_y) 
      opt.zero_grad() 
      loss.backward() 
      opt.step() 
      #l_his.append(loss.data[0]) 
      l_his.append(loss.item())

你可能感兴趣的:(报错)