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