weixin_38256708
2018-08-23 06:40
采纳率: 36.4%
浏览 2.2k

吴恩达deeplearning.ai课程中序列模型这一章的作业Rnn(lstm)反向传播推导

为什么自己算的结果和答案中给的结果对不上?
for t in reversed(range(T_x)):
# Compute all gradients using lstm_cell_backward
gradients = lstm_cell_backward(da[:, :, t] + da_prevt, dc_prevt, caches[t])
# Store or add the gradient to the parameters' previous step's gradient
da_prevt = gradients['da_prev']
dc_prevt = gradients['dc_prev']
dx[:,:,t] = gradients['dxt']
dWf = dWf + gradients['dWf']
dWi = dWi + gradients['dWi']
dWc = dWc + gradients['dWc']
dWo = dWo + gradients['dWo']
dbf = dbf + gradients['dbf']
dbi = dbi + gradients['dbi']
dbc = dbc + gradients['dbc']
dbo = dbo + gradients['dbo']

            这个对吗da[:, :, t] + da_prevt, dc_prevt
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • devmiao 2018-08-23 15:45
    已采纳
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • xiaodidadada 2020-02-09 18:15

    我算的也对不上,我看其他人的代码和预期结果对的上的都没有更新da_prev和dc_prev,感觉有点问题

    评论
    解决 无用
    打赏 举报
  • 大叔变码农 2020-03-02 22:40

    赞同你的答案。我觉得很多博客中的程序好像都有问题,循环时第一个参数不应该是a[:,:,t],而是a[_:,:,t]+a_prev才对。但是搜了很多答案,_都没有加上a_prev,这样的话,相当于只考虑了单步内部输出传来的误差,没有考虑下一步传回来的误差。我也不知道为什么主流答案都是没有加a_prev的。理解不了。

    评论
    解决 无用
    打赏 举报
  • thetree_ 2020-11-05 21:06

    对呀,我看那个文件里给的公式就很奇怪,偏a<t>/偏Wax怎么只算了本时序的导数,为啥不链式求导再加上偏a<t-1>/偏Wax

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题