Tensorflow 中 LSTM 层的门权重顺序

Posted

技术标签:

【中文标题】Tensorflow 中 LSTM 层的门权重顺序【英文标题】:Gate weights order for LSTM layers in Tensorflow 【发布时间】:2021-10-21 00:58:57 【问题描述】:

我有一个包含一些 LSTM 层的 Keras 模型。我知道我可以通过get_weights()方法得到LSTM层的权重,结果是一个由三个元素组成的列表:kernel、recurrent kernel和bias。

如文档所述,每个元素都包含 LSTM 层中 4 个门的权重。但是,它没有说明它们的存储顺序。例如,如果 LSTM 层有 N 个单元,则偏置向量将由 4*N 个元素组成。哪些元素对应于 1st/2nd/3rd/4th 门?

【问题讨论】:

【参考方案1】:

顺序为i, f, c, o,分别代表输入门、遗忘门、单元门和输出门。您可以从LSTMCell实现here获取信息。

lstm = LSTM(100)
lstm(np.zeros((64,10,5)))
kernel = lstm.weights[0]
w_i,w_f,w_c,w_o = tf.split(kernel,4,axis=1)

print(*(w.shape for w in (w_i,w_f,w_c,w_o)))#all are (5, 100)

【讨论】:

以上是关于Tensorflow 中 LSTM 层的门权重顺序的主要内容,如果未能解决你的问题,请参考以下文章

手动从 Tensorflow 导入 LSTM 到 PyTorch

Tensorflow LSTM实现

打印特定层的保存权重 [Tensorflow]

如何从 python 中的预训练模型中获取权重并在 tensorflow 中使用它?

如何将 keras LSTM 层的输出输入到输入层?

使用 Keras,如何将 CuDNNLSTM 生成的权重加载到 LSTM 模型中?