作者chhuang17 ()
看板DataScience
标题[问题] PyTorch反向传播失败
时间Fri May 13 23:52:18 2022
作业系统:win10(ex:mac,win10,win8,win7,linux,etc...)
问题类别:RL(ex:ML,SVM,RL,DL,RNN,CNN,NLP,BD,Vis,etc...)
使用工具:PyTorch 1.10.0(ex:python,Java,C++,tensorflow,keras,MATLAB,etc...)
问题内容:
小弟的硕论要训练一个MADDPG的模型
但是怎麽训练效果都没起来
直到现在才发现原来是反向传播失败了
我的actor根本没有更新
发现问题後改了一下code却报错
是之前一直都没有解决的inplace operation error
当时我在训练的函式中 把actor的输出detach()掉
程式便可运行,但我没发现actor根本就没计算到backward T^T
我有发一篇文在PyTorch Forum,详情可以点进去连结看看
https://reurl.cc/p16bKb
真的很希望有好心人能帮我看看哪里出了问题
现在都5月中了才发现这个bug...QQ
如果还是有任何不清楚的地方也欢迎站内信给我
我也愿意付出一定的酬劳
再麻烦各位前辈不吝指教了,小弟感激不尽!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.166.170.132 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1652457140.A.872.html
1F:推 yiche: 我记得原论文有提供程式码,他的agent用物件封装放在list05/14 00:08
2F:→ yiche: 中,请问你是改那一份code吗?05/14 00:08
3F:推 yiche: 好 看起来不是 xd05/14 00:13
我是根据这部影片改的
https://youtu.be/tZTQ6S9PfkE
※ 编辑: chhuang17 (118.166.170.132 台湾), 05/14/2022 01:27:19
※ 编辑: chhuang17 (114.136.231.155 台湾), 05/14/2022 01:47:17
4F:→ RumiManiac: detach 的意思就是不计算梯度05/14 15:31
对啊,不过我後来改成DDPG的架构跑
反向传播又可行了
实在是很纳闷为何MADDPG不行QQ
※ 编辑: chhuang17 (114.136.231.155 台湾), 05/15/2022 02:23:37
5F:→ yoyololicon: 是不是你bn1重复跑很多次forward 的关系?你拆成不05/15 09:24
6F:→ yoyololicon: 同的normalizing layer 试试05/15 09:24
7F:→ animos: in-place error....good luck!05/15 15:56
这句真的超哭
8F:→ yoyololicon: 我拿了你的actor简单跑了个forward backward 没有遇05/15 20:27
9F:→ yoyololicon: 到问题 可能不是出在这 建议把所有的error 都贴出来05/15 20:27
已解决
後来找到强者帮我debug,似乎是pytorch语法的问题
解法是把所有agent的actor做完backward之後
再一起做optimizer.step()
(但critic的部分不需要这样改…就不知道为什麽了@@)
※ 编辑: chhuang17 (223.137.234.138 台湾), 05/16/2022 07:29:01
10F:→ yoyololicon: optimizer.step()的确会有inplace op 当作学经验吧05/16 08:32
11F:→ yoyololicon: 我简单看了你的learn() 的确两个loss能直接合在一起05/16 13:34
12F:→ yoyololicon: 做backward 不太理解你拆开然後又retain_graph的用意05/16 13:34
13F:→ yoyololicon: 另外还是建议你用个high level的package做refactor05/16 13:35
14F:→ yoyololicon: pytorch-lightning或ignite都好05/16 13:35
15F:→ yoyololicon: 不然目前这个code脏脏的不好debug05/16 13:35
16F:→ yoyololicon: 有看到直接assign optimizer给nn.Module的05/16 13:36
17F:→ yoyololicon: 你这次问题出在optimizer.step()就会不好debug05/16 13:36
感谢yoyo大的热心回覆!
我对PyTorch还不到非常上手
之後等论文告一段落後我再来好好研究一下
※ 编辑: chhuang17 (223.137.234.138 台湾), 05/16/2022 15:09:06