【问题标题】:When predicting with an LSTM in Keras, is the hidden state still adjusted?在 Keras 中使用 LSTM 进行预测时,隐藏状态是否仍然调整?
【发布时间】:2017-04-11 04:11:40
【问题描述】:

当我第一次在 Keras 中用序列数据训练 LSTM 时——我的训练数据—— 然后使用model.predict()以我的测试数据为输入进行预测,LSTM的隐藏状态是否还在调整中?

【问题讨论】:

  • “调整”是什么意思?
  • 测试预测的输出是反馈到节点还是在model.predict()期间不再递归?
  • 我认为您的问题是,在使用预测时,循环状态信息(例如,下一批输入模型的先前输出)是否更新。答案是肯定的,你可以通过在同一个样本上运行 predict 来自己看到这一点,你会得到不同的输出)

标签: sequence keras prediction lstm


【解决方案1】:

神经网络的基本操作是获取一个输入(向量),该输入(向量)通过连接连接到输出,有时还有其他层,例如上下文层。这些连接被建模为矩阵并且强度不同,我们称之为权重矩阵

这意味着当我们将数据输入网络时,我们唯一要做的就是将一个向量放入网络,将值与权重矩阵相乘,然后将其称为输出。在特殊情况下,比如循环网络,我们甚至会将一些值存储在其他向量中,并将这些存储的值与当前输入相结合。

在训练过程中,我们不仅将数据输入网络,我们还计算了一个错误值,我们以一种巧妙的方式进行评估,以便它告诉我们应该如何更改权重矩阵,我们将输入相乘(以及可能过去的重复输入)层)与。

因此:是的,当然,循环层的基本执行行为不会改变。我们只是不再更新权重。

有些层在执行期间的行为确实不同,因为它们被视为正则化器,即提高网络训练效率的方法,在执行期间被认为是不必要的。这些层的示例是NoiseBatchNormalization。几乎所有的神经网络层(包括循环层)都包括 drop-out,这是另一种形式的正则化,它禁用层中随机百分比的连接。这也只在训练期间进行。

【讨论】:

  • 感谢您的澄清,我想我把隐藏状态和相应的权重矩阵弄混了。
猜你喜欢
  • 2021-04-14
  • 2021-09-15
  • 2018-01-20
  • 2019-03-15
  • 1970-01-01
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
相关资源
最近更新 更多