我建议您首先学习BPTT(通过时间的反向传播)和小型批量SGD(随机梯度下降)的概念,然后您将进一步了解LSTM的训练过程。
对于您的问题,
Q1。在无状态情况下,LSTM更新batch1上的参数,然后为batch2启动隐藏状态和单元状态(通常为全零),而在无状态情况下,它使用batch1的最后输出隐藏状态和单元状态作为batch2的初始状态。
Q2。如上所示,当两个批次中的两个序列有联系(例如,一只股票的价格)时,您最好使用有状态模式,否则(例如,一个序列代表完整的句子),则应使用无状态模式。
顺便说一句,@ vu.pham说if
we use stateful RNN, then in production, the network is forced to deal with infinite long sequences。实际上,这似乎是不正确的,正如您在Q1中看到的那样,LSTM不会学习整个序列,它首先会在batch1中学习序列,更新参数,然后再在batch2中学习序列。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)