作者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/m.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