今天在运行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

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐