我正在尝试创建一个小的双向循环神经网络。模型本身编译没有错误,但是在尝试拟合模型时,我收到错误消息,指出我应该先编译。请参阅下面的代码片段:
# 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)
运行时错误:您必须在使用之前编译模型。
我使用相同的设置来训练单向 RNN,效果很好。感谢任何有助于解决运行时错误的提示。 (重新启动内核没有帮助)
也许我没有正确实例化“双向”?
请注意:此问题不同于 Do I need to compile before 'X'问题类型
注2:相同代码的R示例可以在here中找到
最佳答案
找到了,
当使用 Bidirectional 时,它应该被视为一个层,将 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])))
关于python-3.x - 编译完成后 Keras 双向 "RuntimeError: You must compile your model before using it.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50969459/