我创建了自己的类,该类在其方法之一中创建了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'])
Run Code Online (Sandbox Code Playgroud)
在其他方法中,我尝试使用python生成器作为数据提供程序来训练此模型。
self.model.fit_generator(my_gen(), steps=10, epochs=1, verbose=1)
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
raise RuntimeError('You must compile your model before using it.')
RuntimeError: You must compile your model before using it.
Run Code Online (Sandbox Code Playgroud)
如果我将LSTM层更改为密集层,则错误不会增加。我究竟做错了什么?
带有Tensorflow 1.8.0后端的Keras版本2.2.0。
似乎第一个Keras LSTM层input_shape在使用时仍需要一个fit_generator时间,而Keras文档中似乎缺少该时间,并导致“使用之前必须先编译模型”错误。
要解决该问题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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4118 次 |
| 最近记录: |