Keras的默认LSTM是展开的还是有状态的?

在Keras的文档中,statefulunroll都被设置为False。那么,如果既不是展开也不是有状态的,Keras是如何进行循环的呢?Keras RNN文档

我检查了Keras中RNN的源代码,似乎默认操作是在每个时间步初始化LSTM。我理解得对吗?

       if initial_state is not None:            pass       elif self.stateful:            initial_state = self.states       else:            initial_state = self.get_initial_state(inputs)

如果我理解正确的话,这是否意味着,对于时间序列分析,最好设置unroll=True


回答:

既不展开也不保存状态。

请记住,Keras中的”stateful”仅表示”连续的两个批次将被解释为同一序列的两部分”。仅此而已。(批次2是批次1的续集)

所有的LSTM当然都有状态(不可能没有状态)。

小心使用”初始化LSTM”这个表达。stateful=False的层会在每个批次”重置状态”。实际结果是:”每个批次是一组从头到尾的独立序列”。(批次2不是批次1的续集)

“状态”是关于”序列至当前步骤的历史信息”。它们与”权重”完全不同,权重是层从所有序列中实际学到的内容。

“展开”是一种将循环计算转换为单一无循环图的方法。它仅适用于短序列,以牺牲更多内存为代价获得更快的处理速度。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注