在Keras中使用LSTM和使用张量流进行时间序列预测

时间:2018-03-27 19:22:18

标签: python-3.x tensorflow keras lstm

我想在keras中使用tensorflow定义LSTM图层。代码如下:

model = Sequential()
inputs = Input(shape=(time_steps, 1))

cell = tf.nn.rnn_cell.LSTMCell(n_neurons)
multi_cell = tf.nn.rnn_cell.MultiRNNCell([cell] * n_layers)
lstm_outputs, states = tf.nn.dynamic_rnn(multi_cell, inputs, dtype=tf.float32)

outputs = TimeDistributed(Dense(1))(lstm_outputs)

model = Model(inputs=inputs, outputs=outputs)

adam = optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08)
model.compile(loss='mean_squared_error', optimizer=adam)

print(model.summary())

运行时发生错误:

Using TensorFlow backend.
Traceback (most recent call last):
  File "/Users/zhjmdcjk/Desktop/Untitled.py", line 81, in <module>
    model = Model(inputs=inputs, outputs=outputs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keras/engine/topology.py", line 1734, in __init__
    build_map_of_graph(x, finished_nodes, nodes_in_progress)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keras/engine/topology.py", line 1724, in build_map_of_graph
    layer, node_index, tensor_index)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/keras/engine/topology.py", line 1695, in build_map_of_graph
    layer, node_index, tensor_index = tensor._keras_history
AttributeError: 'Tensor' object has no attribute '_keras_history'

我不清楚这些,任何人都可以给我一些建议。非常感谢!

1 个答案:

答案 0 :(得分:0)

你在Keras使用Tensorflow的LSTM有什么特别的原因吗?您可以直接使用Keras LSTM图层。

inputs = Input(shape=(time_steps, 1))

lstm1 = LSTM(n_neurons, return_sequences=True)(inputs)

lstm_outputs = LSTM(n_neurons, return_sequences=True)(lstm1)

outputs = TimeDistributed(Dense(1))(lstm_outputs)

model = Model(inputs=inputs, outputs=outputs)

此外,在Keras的功能API的情况下,您不需要使用model = Sequential()。