Neural network 在Keras训练RNN后,我们如何获得体重?
我在Keras培训了一名RNN。现在,我想得到经过训练的权重值:Neural network 在Keras训练RNN后,我们如何获得体重?,neural-network,deep-learning,keras,lstm,rnn,Neural Network,Deep Learning,Keras,Lstm,Rnn,我在Keras培训了一名RNN。现在,我想得到经过训练的权重值: model = Sequential() model.add(SimpleRNN(27, return_sequences=True , input_shape=(None, 27), activation = 'softmax'))<br> model.compile(loss='categorical_crossentropy', optimizer='rmsprop',
model = Sequential()
model.add(SimpleRNN(27, return_sequences=True , input_shape=(None, 27), activation = 'softmax'))<br>
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.get_weights()
model=Sequential()
添加(SimpleRN(27,返回序列=True,输入形状=(无,27),激活='softmax'))
model.compile(loss='classifical_crossentropy',
优化器='rmsprop',
指标=[‘准确度’])
model.get_weights()
这给了我两个shape
(27,27)
数组和一个shape(27,1)
数组。我不明白这些数组的含义。此外,我还应该得到另外两个shape(27,27)
和(27,1)
数组,它们将计算隐藏状态“a”的激活。如何获取这些权重?model.get_weights()返回的数组直接对应于所使用的权重。这些措施包括:
- 大小为
的
内核
。在您的例子中,矩阵(输入\u形[-1],单位)
和input_shape=(None,27)
,因此它是units=27
。内核与(27,27)
输入相乘
- 大小为
的(单位,单位)
矩阵,也恰好是循环\u内核
。此矩阵与前一状态相乘(27,27)
- 形状的偏移数组
(单位,)==(27,)
# W = kernel
# U = recurrent_kernel
# B = bias
output = new_state = act(W * input + U * state + B)
请注意,keras实现使用一个偏差向量,因此总共有三个数组。要计算输出,我们必须将新的_状态与输出_内核和输出_偏差相乘。Output=act(Out_kernel*new_state+By),因此,我们应该总共有3个大小的内核(27,27)和2个大小的偏差(27,1),这不是简单RNN单元的工作方式。答案中有正确的公式。唯一拥有3个以上参数数组的库是pytorch,它们使用两个偏置向量和两个内核。Keras使用单个偏置矢量。见本讨论: