关于“理解Keras LSTM”的疑问`
我是LSTMs的新手,正在经历一个复杂的过程,对作者的一个漂亮的答案产生了一些愚蠢的怀疑 以下是我的一些疑问:关于“理解Keras LSTM”的疑问`,keras,deep-learning,lstm,recurrent-neural-network,Keras,Deep Learning,Lstm,Recurrent Neural Network,我是LSTMs的新手,正在经历一个复杂的过程,对作者的一个漂亮的答案产生了一些愚蠢的怀疑 以下是我的一些疑问: 在实现一对多一节中指定了两种方法,我们可以使用stateful=True重复获取一个步骤的输出,并将其作为下一个步骤的输入(需要输出功能==输入功能) 在一对多重复向量图中,重复向量在所有时间步中作为输入馈送,而在一对多有状态=真的中,输出在下一时间步作为输入馈送。那么,我们不是通过使用stateful=True来改变层的工作方式吗 在构建RNN时,应遵循上述两种方法中的哪一种(使用重
实现一对多
一节中指定了两种方法,我们可以使用stateful=True
重复获取一个步骤的输出,并将其作为下一个步骤的输入(需要输出功能==输入功能)
在一对多重复向量图中,重复向量在所有时间步中作为输入馈送,而在一对多有状态=真的中,输出在下一时间步作为输入馈送。那么,我们不是通过使用stateful=True
来改变层的工作方式吗
在构建RNN时,应遵循上述两种方法中的哪一种(使用重复向量或将上一个时间步长输出作为下一个输入)
One-to-many with stateful=True
部分下,要更改One-to-many
的行为,在预测的手动循环代码中,我们如何知道steps\u to\u predict
变量,因为我们事先不知道输出序列长度
我也不理解整个模型使用最后一步输出
生成下一步输出的方式。它让我对model.predict()
函数的工作感到困惑。我的意思是,不是model.predict()
一次同时预测整个输出序列,而不是遍历要生成的输出序列数(其值我仍然不知道),然后执行model.predict()
来预测给定迭代中的特定时间步输出
多对多
案例。任何其他链接都会有帮助model.reset_states()
来确保新批次独立于前一批次。但是,我们是手动创建序列批次,使一个批次跟随另一个批次,还是在stateful=True
模式下将序列自动划分为这样的批次
如果是手动完成的,为什么会有人将数据集分成这样的批次,其中一部分序列在一个批次中,另一部分在下一个批次中stateful=True
的实际实现或示例/用例是什么(因为这似乎是不寻常的)?我正在学习LSTM,这是我第一次被介绍到Keras中的stateful
在每个批处理后保持或重置内部状态。那么,如果我们在每批训练后不断地重置内部状态,模型将如何学习?重置是否真的意味着重置参数(用于计算隐藏状态)
B。在行中,如果stateful=False:自动重置内部状态,重置最后一个输出步骤
。重置最后一个输出步骤是什么意思?我的意思是,如果每一步都产生自己的输出,那么重置最后一步的输出意味着什么,而这也只是最后一步
C。在回答问题2
和问题4
的第2点时,我仍然没有让您的在每次迭代之间操作批处理,并且需要有状态的(问题2
的最后一行),它只重置状态)。我的观点是,我们不知道在一个时间步长中生成的每个输出的输入
因此,您将序列分解为只包含一个步骤的序列,然后使用new\u step=model.predict(last\u step)
,但是您如何知道需要重复多长时间(循环必须有一个停止点)?另外,一定要解释有状态的部分(在问题2的最后一行)
D。在一对多且stateful=True
下的代码中,似乎for循环(手动循环)用于预测下一个单词仅在测试时使用。该模型是否在列车运行时包含该内容,或者我们是否需要在列车运行时手动使用该循环
E。假设我们正在做一些机器翻译工作,我认为在将整个输入(要翻译的语言)输入到输入时间步,然后生成输出(翻译的语言)之后,会发生序列中断每个时间步都将通过手动循环进行,因为现在我们以输入结束,并开始使用迭代在每个时间步生成输出。我做对了吗
F。由于LSTM的默认工作需要回答中提到的3件事情,因此在序列中断的情况下,当前输入
和以前的输出
是否以相同的向量馈送,因为在没有可用的当前输入的情况下,它们的值是相同的
G。在“预测:部分”的“有状态=True的多对多”下,代码如下:
predicted = model.predict(totalSequences)
firstNewStep = predicted[:,-1:]
由于到目前为止,在当前序列中查找下一个单词的手动循环还没有使用,我如何知道模型预测的时间步的计数
。predict(totalSequences)
,以便预测的最后一步(predicted[:,-1::
)随后将用于生成