【发布时间】:2018-01-12 20:15:20
【问题描述】:
我在时间序列数据上使用lstm。我有与时间无关的时间序列特征。想象一下该系列的公司股票以及非时间序列特征中的公司位置之类的东西。这不是用例,但它是相同的想法。对于这个例子,我们只预测时间序列中的下一个值。
所以一个简单的例子是:
feature_input = Input(shape=(None, data.training_features.shape[1]))
dense_1 = Dense(4, activation='relu')(feature_input)
dense_2 = Dense(8, activation='relu')(dense_1)
series_input = Input(shape=(None, data.training_series.shape[1]))
lstm = LSTM(8)(series_input, initial_state=dense_2)
out = Dense(1, activation="sigmoid")(lstm)
model = Model(inputs=[feature_input,series_input], outputs=out)
model.compile(loss='mean_squared_error', optimizer='adam', metrics=["mape"])
但是,我只是不确定如何正确指定列表中的初始状态。我明白了
ValueError: An initial_state was passed that is not compatible with `cell.state_size`. Received `state_spec`=[<keras.engine.topology.InputSpec object at 0x11691d518>]; However `cell.state_size` is (8, 8)
我可以看到是由 3d 批量尺寸引起的。我尝试使用 Flatten、Permutation 和 Resize 图层,但我不认为这是正确的。我缺少什么以及如何连接这些层?
【问题讨论】:
-
您对这种方法有什么参考吗?我正在尝试实现类似的东西(用其他数据初始化 RNN),我很惊讶我没有找到一个好的参考。
标签: python machine-learning keras