Keras双向“ RuntimeError:您必须在使用模型之前对其进行编译。”编译完成后

时间:2018-06-21 13:12:01

标签: python-3.x keras

我正在尝试创建一个小的双向递归神经网络。模型本身编译时没有错误,但是在尝试拟合模型时出现错误,指出应该首先编译。请参见下面的代码段:

# fourth recurrent model, bidirectional
bidirectional_recurrent = Sequential()
bidirectional_recurrent.add(Bidirectional(GRU(32, input_shape=(int(lookback/steps), data_scaled.shape[-1]))))
bidirectional_recurrent.add(Dense(1))

bidirectional_recurrent.compile(optimizer='rmsprop', loss='mae')

bidirectional_recurrent_history = bidirectional_recurrent.fit_generator(train_gen, steps_per_epoch=500, epochs=40,
                                               validation_data=val_gen, validation_steps=val_steps)

RuntimeError:您必须先编译模型,然后再使用它。

我使用相同的设置来训练单向RNN,效果很好。任何帮助解决运行时错误的技巧都将受到赞赏。 (重新启动内核没有帮助)
也许我没有正确实例化“双向”?

请注意:该问题与Do I need to compile before 'X'类型的问题不同
注意2:可以找到here

1 个答案:

答案 0 :(得分:5)

找到了,
使用双向时,应将其视为一个层,将input_shape包含在Bidirectional()中而不是GRU()对象中即可解决此问题

如此

bidirectional_recurrent.add(Bidirectional(GRU(32, input_shape=(int(lookback/steps),
                            data_scaled.shape[-1]))))

成为

bidirectional_recurrent.add(Bidirectional(GRU(32), input_shape=(int(lookback/steps),
                            data_scaled.shape[-1])))