【发布时间】:2017-08-09 05:50:54
【问题描述】:
我目前正在使用 LSTM 层训练用于天气预报的循环神经网络。网络本身非常简单,大致如下:
model = Sequential()
model.add(LSTM(hidden_neurons, input_shape=(time_steps, feature_count), return_sequences=False))
model.add(Dense(feature_count))
model.add(Activation("linear"))
LSTM 层的权重确实具有以下形状:
for weight in model.get_weights(): # weights from Dense layer omitted
print(weight.shape)
> (feature_count, hidden_neurons)
> (hidden_neurons, hidden_neurons)
> (hidden_neurons,)
> (feature_count, hidden_neurons)
> (hidden_neurons, hidden_neurons)
> (hidden_neurons,)
> (feature_count, hidden_neurons)
> (hidden_neurons, hidden_neurons)
> (hidden_neurons,)
> (feature_count, hidden_neurons)
> (hidden_neurons, hidden_neurons)
> (hidden_neurons,)
简而言之,这个 LSTM 层中看起来有四个“元素”。我现在想知道如何解释它们:
此表示中的
time_steps参数在哪里?它如何影响权重?我读到 LSTM 由几个块组成,例如输入和遗忘门。如果这些在这些权重矩阵中表示,哪个矩阵属于哪个门?
有什么方法可以查看网络学到了什么?例如,从上一个时间步(
t-1,如果我们要预测t)需要多少,从t-2等需要多少?例如,如果我们可以从权重中读取到输入t-5完全不相关,将会很有趣。
非常感谢您的澄清和提示。
【问题讨论】:
标签: python keras neural-network lstm