我是Keras的新手。我正在研究具有LSTM层的深度学习模型。
但是val_loss输出各不相同。
例如,这是我的第一个运行输出:
Using TensorFlow backend.
Epoch 1/40
500/500 [==============================] - 10s 19ms/step - loss: 0.4310 - val_loss: 1.9291
Epoch 2/40
500/500 [==============================] - 8s 16ms/step - loss: 0.2082 - val_loss: 2.1047
Epoch 3/40
500/500 [==============================] - 8s 17ms/step - loss: 0.1810 - val_loss: 2.1206
Epoch 4/40
500/500 [==============================] - 8s 15ms/step - loss: 0.1679 - val_loss: 2.2483
这是我的第二个运行输出:
Epoch 1/40
500/500 [==============================] - 8s 16ms/step - loss: 0.4424 - val_loss: 0.2251
Epoch 2/40
500/500 [==============================] - 8s 17ms/step - loss: 0.2142 - val_loss: 0.2313
Epoch 3/40
500/500 [==============================] - 8s 16ms/step - loss: 0.1807 - val_loss: 0.2031
Epoch 4/40
500/500 [==============================] - 8s 16ms/step - loss: 0.1682 - val_loss: 0.2667
我不知道为什么会发生,也无法解决它的过拟合问题。
这是我的代码:
from keras.models import Sequential
from keras import layers
from keras.optimizers import RMSprop
from keras import regularizers
model = Sequential()
model.add(layers.LSTM(64,
kernel_regularizer=regularizers.l2(0.01),
dropout=0.2,
recurrent_dropout=0.5,
input_shape=(None, float_data.shape[-1])))
model.add(layers.Dense(1))
model.compile(optimizer=RMSprop(), loss='mae')
history = model.fit_generator(train_gen,
steps_per_epoch=500,
epochs=40,
validation_data=val_gen,
validation_steps=val_steps)
我的数据大小是2733行×50列,batch_size是32。
感谢你的帮助!如果需要,我可以提供更多代码。
答案 0 :(得分:0)
我不认为代码有什么问题。正如任何形式的机器学习所预期的那样,这只是随机性。只要损耗值的波动幅度不大,就应该是一个问题。只需将其视为计算机学习相同的东西但使用不同的步骤即可。
Cheerio!
答案 1 :(得分:-1)
您正在训练时改变体重。当然,验证损失会发生变化。.并且希望它会下降,并且类似于训练损失,这可能意味着您并没有过拟合!