Closed lizhihao6 closed 6 years ago
谢谢你指出问题,是的,td
的确有维度问题,td
的维度需要和a
一样, 我根据这个修改了代码。
看到您修改的代码是
exp_v = m.log_prob(a) * td.detach().squeeze()
想请教一下,使用squeeze和[0]有什么区别吗?
exp_v = m.log_prob(a) * td.detach()[0]
其实在这个例子中是没差别的。squeeze主要是将所有为1的维度去掉。比如(5,1,2) 变成(5,2)
好的,谢谢莫烦:)
发自我的 iPad
在 2018年8月20日,下午6:40,Morvan notifications@github.com<mailto:notifications@github.com> 写道:
其实在这个例子中是没差别的。squeeze主要是将所有为1的维度去掉。比如(5,1,2) 变成(5,2)
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/MorvanZhou/pytorch-A3C/issues/5#issuecomment-414273274, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AVJFRKejLGOYkmQLft61uFtYOL7Njd1Kks5uSpIHgaJpZM4WDFIy.
loss_function中的
log_prob是[prob1, prob2, prob3] td 是 [[value1, value2, value3]] 这样直接相乘得到的是一个二维矩阵,但是A2C里面不应该是对应步骤的A与对应的actor_loss相乘吗? 是否该改为
这是我更改loss函数后的reward,似乎具有更好的稳定性?