对于 Keras 中的 LSTM 和 fit_generator,出现错误“您必须在使用模型之前编译它”

2024-01-10

我创建了自己的类,该类在其方法之一内创建了 Keras 模型。

self.model = Sequential()
self.model.add(LSTM(32))
self.model.add(Dense(2, activation='relu'))
self.model.compile(optimizer='RMSprop', loss='categorical_crossentropy', metrics=['acc'])

在其他方法中,我尝试使用 python 生成器作为数据提供者来训练这个模型。

self.model.fit_generator(my_gen(), steps=10, epochs=1, verbose=1)

这会导致错误:

raise RuntimeError('You must compile your model before using it.')
RuntimeError: You must compile your model before using it.

如果我将 LSTM 层更改为 Dense 层,错误不会增加。我究竟做错了什么?

Keras 版本 2.2.0 与 Tensorflow 1.8.0 后端。


看来第一个 Keras LSTM 层仍然需要input_shape使用时fit_generatorKeras 文档中似乎缺少此内容,并导致“您必须在使用模型之前编译模型”错误。

要解决问题,请确保您有一个input_shape第一个 LSTM 层中的参数,如下例所示:

model.add(LSTM(100, input_shape=(n_timesteps, n_dimensions), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(100, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(10, activation='tanh'))

model.compile(loss='mse', optimizer='adam')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于 Keras 中的 LSTM 和 fit_generator,出现错误“您必须在使用模型之前编译它” 的相关文章