pytorch各种报错个人笔记

Posted _less is more

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytorch各种报错个人笔记相关的知识,希望对你有一定的参考价值。

1、one of the variables needed for gradient computation has been modified by an inplace operation

可能有多种原因
1、以 ‘_’ 结尾的函数
2、+=、/=这样的操作
3、激活函数如 torch.nn.ReLU(inplace=True)

如果是第二种,把 a += b 换成 a = a + b 即可,第三种则置inplace为False;若是第一种则麻烦一点,需要找替代函数或者自己实现该函数的功能

2、An attempt has been made to start a new process before the current process has finished its bootstrapping phase.

在使用torch.multiprocessing.spawn时报此错。pytorch的torch.multiprocessing是基于python的原生multiprocessing进行二次开发的模块,在multiprocessing中,当在另一个CPU核心上产生一个子进程时,会将原来的主py文件再次导入,因此,在如下示例代码中

# start process for each gpu
mp.spawn(main, nprocs=args.g, args=(args,))

当其被加载至另一个CPU核心运行时,此语句会被再执行一遍,因此会递归产生大量子进程,最后导致该报错。因此此语句应该加入如下代码后进行运行:

if __name__ == '__main__':
    # start process for each gpu
    mp.spawn(main, nprocs=args.g, args=(args,))

这样子进程就不会再运行mp.spawn了

以上是关于pytorch各种报错个人笔记的主要内容,如果未能解决你的问题,请参考以下文章

pytorch笔记01-数据增强

Pytorch模型训练实用教程学习笔记:三损失函数汇总

Pytorch模型训练实用教程学习笔记:二模型的构建

(d2l-ai/d2l-zh)《动手学深度学习》pytorch 笔记前言(介绍各种机器学习问题)以及数据操作预备知识Ⅲ(概率)

Pytorch模型训练实用教程学习笔记:一数据加载和transforms方法总结

Pytorch模型训练实用教程学习笔记:四优化器与学习率调整