今天在运行Pytorch手写数字识别代码时,出现了如下错误:
Pytorch出错
其实挺奇怪的… 因为这段代码是前几天刚写完跑成功的,今天再跑就出问题了
至于解决方法也很简单,出错提到了是多线程的缘故,那么就有如下两种:

  1. 去掉num_workers参数
# train_loader = Data.DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True, num_workers=2)
train_loader = Data.DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)
  1. 在跑epoch之前,加上if __name__=='__main__':
if __name__ == '__main__':
    for epoch in range(EPOCH):
        for step, (x, y) in enumerate(train_loader):

这样就能正常运行了
至于if __name__=='__main__的作用

当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;
当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

可参考Python 中的 if name == ‘main’ 该如何理解

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐