with torch.no_grad(): for data, targets in test_loader:中出现RuntimeError: An attempt has been made to start a new process before the current process has finished its bootstrapping phase. This probably means that you are not using fork to start your child processes and you have forgotten to use the proper idiom in the main module: if name == 'main': freeze_support() ... The "freeze_support()" line can be omitted if the program is not going to be frozen to produce an executable.
时间: 2024-02-16 07:04:59 浏览: 261
浅谈pytorch中torch.max和F.softmax函数的维度解释
这个错误通常发生在使用 PyTorch 的 DataLoader 加载数据时,因为它在内部使用了 Python 的 `multiprocessing` 模块来加速数据读取。
和上一个问题类似,你需要在主模块中添加以下代码:
```python
if __name__ == '__main__':
multiprocessing.freeze_support()
```
这个代码片段需要添加到你的主模块中,并且在启动 DataLoader 之前。如果你的代码已经包含了这个代码片段,但仍然出现这个错误,那么可能是因为你的代码在多个进程中同时运行了。
你可以尝试在代码的其它位置添加这个代码片段,或者将你的代码封装成一个可执行文件,这样就可以避免这个错误了。
阅读全文