推 yiche: 我記得原論文有提供程式碼,他的agent用物件封裝放在list05/14 00:08
→ yiche: 中,請問你是改那一份code嗎?05/14 00:08
推 yiche: 好 看起來不是 xd05/14 00:13
我是根據這部影片改的
https://youtu.be/tZTQ6S9PfkE
→ RumiManiac: detach 的意思就是不計算梯度05/14 15:31
對啊,不過我後來改成DDPG的架構跑
反向傳播又可行了
實在是很納悶為何MADDPG不行QQ
※ 編輯: chhuang17 (114.136.231.155 臺灣), 05/15/2022 02:23:37
→ yoyololicon: 是不是你bn1重複跑很多次forward 的關係?你拆成不05/15 09:24
→ yoyololicon: 同的normalizing layer 試試05/15 09:24
→ animos: in-place error....good luck!05/15 15:56
這句真的超哭
→ yoyololicon: 我拿了你的actor簡單跑了個forward backward 沒有遇05/15 20:27
→ 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
→ yoyololicon: optimizer.step()的確會有inplace op 當作學經驗吧05/16 08:32
→ yoyololicon: 我簡單看了你的learn() 的確兩個loss能直接合在一起05/16 13:34
→ yoyololicon: 做backward 不太理解你拆開然後又retain_graph的用意05/16 13:34
→ yoyololicon: 另外還是建議你用個high level的package做refactor05/16 13:35
→ yoyololicon: pytorch-lightning或ignite都好05/16 13:35
→ yoyololicon: 不然目前這個code髒髒的不好debug05/16 13:35
→ yoyololicon: 有看到直接assign optimizer給nn.Module的05/16 13:36
→ yoyololicon: 你這次問題出在optimizer.step()就會不好debug05/16 13:36
感謝yoyo大的熱心回覆!
我對PyTorch還不到非常上手
之後等論文告一段落後我再來好好研究一下
※ 編輯: chhuang17 (223.137.234.138 臺灣), 05/16/2022 15:09:06