Keras - 如何获取 GRU 单元状态?
Posted
技术标签:
【中文标题】Keras - 如何获取 GRU 单元状态?【英文标题】:Keras - How to get GRU cell state? 【发布时间】:2019-09-20 12:31:34 【问题描述】:对于 LSTM,我们可以检索最后一个输出和最后一个单元状态,如下所示
outputs, state_h, state_c= LSTM(lstm_dim, return_sequences=True, return_state=True)(inputs)
其中 state_h 是最后一个输出序列; output[-1]=state_h 和 state_c 是LSTM 的最后一个 CELL STATE。
但是对于 GRU,它没有这样的选项,而只给出与 state_h 等效的选项。如何从 Keras GRU 获取 state_c 的最后一个单元状态?
【问题讨论】:
【参考方案1】:GRU
中没有内存,也就是说没有cell state
。
GRU
,一般直接对隐藏状态进行操作得到输出值。在大多数情况下,GRU
与LSTM
具有相同的性能,但计算量更少(参数数量更少)。
欢迎提问。
【讨论】:
让我再澄清一点。我正在研究 LSTM 和 GRU 单元的结构。对于 LSTM,ht 是时间 t 的输出,Ct 是细胞状态?而对于 GRU 只有 ht 所以你说没有单元状态并且它严格应用于 Keras?我一直认为单元状态意味着单元中的一些权重用于进行 LSTM 和 GRU 的计算。我的猜测是后者,这是我的想法,是错误的? 如果是这样,我怎样才能从 Keras LSTM 层获取细胞状态序列?是否需要对图层进行一些自定义修改? 当您使用return_sequence
时,它会返回每个单元格的输出以及隐藏状态,即使它已被滚动。当您附加 LSTM 或 GRU 的其他层时,这很有用,这可以从那些隐藏的信息中受益。更多内容可以参考link
您的任务不需要任何自定义层。请阅读 keras documentation。
对不起,您的回答不正确。 return_sequences 只返回 LSTM 序列的输出,而不是 LSTM 序列的单元状态。即使使用 return_state,它也只给出 LSTM 序列的最后一个单元状态。我想知道序列的每个细胞状态。我什至测试了示例代码,看看它们提供了什么。以上是关于Keras - 如何获取 GRU 单元状态?的主要内容,如果未能解决你的问题,请参考以下文章