LSTM 层的权重和偏差 Python
Weights and Biases of LSTM Layer Python
我开发了一个具有 1 个 LSTM 层和 3 个密集层的 LSTM 模型,如下所示
model = Sequential()
model.add(LSTM(units = 120, activation ='relu', return_sequences = False,input_shape
(train_in.shape[1],5)))
model.add(Dense(100,activation='relu'))
model.add(Dense(50,activation='relu'))
model.add(Dense(1))
我已经训练好了模型,得到了模型训练好的权重和偏差。详情如下。
w = model.get_weights()
w[0].shape, w[1].shape,w[2].shape,w[3].shape,w[4].shape,w[5].shape,w[6].shape,w[7].shape,w[8].shape
我得到的输出是,
((5, 480),(120, 480),(480,),(120, 100),(100,),(100, 50),(50,),(50, 1),(1,))
给出了2个维度为(5,480)&(120,480)的权重矩阵和一个dim(480,)的偏置矩阵对应LSTM层。其他的跟密集层有关。
我想知道的是,LSTM 有 4 层。那么我怎样才能分别得到这 4 层的权重和偏差呢?我可以将总权重(5,480)分成4等份并认为第1个120对应LSTM的第1层,第2个120属于LSTM的第2层等等吗?
请分享您对此的宝贵意见。也请任何好的参考
由于其内部门单元结构,LSTM 没有 4 层,但有 4 个权重矩阵。如果这令人困惑,阅读一些关于 LSTM 工作原理的资源会很有帮助。总而言之,内部由 3 个门和 1 个单元状态组成,用于计算最终隐藏状态。
如果您检查 underlying implementation,您可以看到它们的连接顺序:
[i, f, c, o]
# i is input gate weights (W_i).
# f is forget gate weights (W_f).
# o is output gate weights (W_o).
# c is cell gate weights (W_c).
因此,在偏置张量 (480,)
的示例中,您可以将其分成 4 个大小为 120 的子张量,其中 w[:120]
表示输入门权重,w[120:240]
表示遗忘门权重等等。
我开发了一个具有 1 个 LSTM 层和 3 个密集层的 LSTM 模型,如下所示
model = Sequential()
model.add(LSTM(units = 120, activation ='relu', return_sequences = False,input_shape
(train_in.shape[1],5)))
model.add(Dense(100,activation='relu'))
model.add(Dense(50,activation='relu'))
model.add(Dense(1))
我已经训练好了模型,得到了模型训练好的权重和偏差。详情如下。
w = model.get_weights()
w[0].shape, w[1].shape,w[2].shape,w[3].shape,w[4].shape,w[5].shape,w[6].shape,w[7].shape,w[8].shape
我得到的输出是,
((5, 480),(120, 480),(480,),(120, 100),(100,),(100, 50),(50,),(50, 1),(1,))
给出了2个维度为(5,480)&(120,480)的权重矩阵和一个dim(480,)的偏置矩阵对应LSTM层。其他的跟密集层有关。
我想知道的是,LSTM 有 4 层。那么我怎样才能分别得到这 4 层的权重和偏差呢?我可以将总权重(5,480)分成4等份并认为第1个120对应LSTM的第1层,第2个120属于LSTM的第2层等等吗?
请分享您对此的宝贵意见。也请任何好的参考
由于其内部门单元结构,LSTM 没有 4 层,但有 4 个权重矩阵。如果这令人困惑,阅读一些关于 LSTM 工作原理的资源会很有帮助。总而言之,内部由 3 个门和 1 个单元状态组成,用于计算最终隐藏状态。
如果您检查 underlying implementation,您可以看到它们的连接顺序:
[i, f, c, o]
# i is input gate weights (W_i).
# f is forget gate weights (W_f).
# o is output gate weights (W_o).
# c is cell gate weights (W_c).
因此,在偏置张量 (480,)
的示例中,您可以将其分成 4 个大小为 120 的子张量,其中 w[:120]
表示输入门权重,w[120:240]
表示遗忘门权重等等。