pytorch使用出现"RuntimeError: An attempt has been made to start a new process before the..." 解决方法

本文解决了Pytorch手写数字识别代码中出现的错误,通过调整DataLoader的num_workers参数和使用if __name__ == '__main__'来避免多线程问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在运行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’ 该如何理解

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值