我正在尝试对一个网络进行建模,该网络需要90个参数,并给出一个介于1和6之间(含1和6)的整数。
以下是i
打算开始使用的按比例缩放的模型,我很感谢所有的更正或指导
self.model = keras.Sequential()
self.model.add(BatchNormalization(input_shape=(None, 90)))
self.model.add(Activation(activation="relu"))
self.model.add(LSTM(50))
self.model.add(Activation(activation="relu"))
self.model.add(Dropout(0.01))
self.model.add(Dense(7, activation="softmax"))
self.train_epoch = 6000
opt = keras.optimizers.Adam(lr=0.000002)
self.model.compile(optimizer=opt, loss=keras.losses.sparse_categorical_crossentropy, metrics=['accuracy'])
info = self.model.fit(self.x, self.y, epochs=self.train_epoch, validation_data=(self.m, self.n), shuffle=True )
问题来了,我的验证损失在一段时间后一直在增加。 我尝试了低学习率,高辍学价值,甚至增加了层次数。 有人可以告诉我我做错了什么吗。
我也不确定要使用多少层或每层节点来实现精度值大于0.5。
如果有人可以帮助,我将提供数据链接,以查看他们是否可以取得更好的结果。
这里是我当前的图表。enter image description here
答案 0 :(得分:0)
当然,如果长时间训练,验证错误最终会增加。 如标题中所述,这是过度拟合的常见结果。这就是为什么您要检查验证错误(以检测过度拟合并终止训练)以及训练错误的原因。 您可以自己监视验证丢失,也可以使用early stopping。
在Keras中应用早期停止的方法介绍于: https://machinelearningmastery.com/how-to-stop-training-deep-neural-networks-at-the-right-time-using-early-stopping/
请注意,LSTM用于时间序列数据(keras.**Sequential**()
)。
答案 1 :(得分:0)
您的陈述与图表矛盾。遇到过度拟合时,请始终减少模型的参数数量(即层/内核)。尝试训练更少的时期。您似乎正在增加他们。此外,您的机会等级是1/7,而不是1/2。我相信这是7类问题。