以 99% 训练且验证拆分准确率不超过 70%

数据挖掘 深度学习 喀拉斯 张量流
2021-10-08 08:28:01

我正在训练一个模型,该模型在训练设置上的准确率高达 99%
,但验证拆分测试增加不超过 70-72%

这就是我的模型的配置方式:

model = Sequential()
#model.add(TimeDistributed(Dense(64, activation='linear')))
#model.add(GRU(512, return_sequences=True, activation='linear',))
model.add(LSTM(128, return_sequences=True, activation='linear'))
model.add(Conv1D(64, 64, strides=1, padding='same'))
model.add(Dense(128, activation="linear"))#, kernel_regularizer=regularizers.l1_l2(l1=1e-4, l2=1e-6)
model.add(Dropout(0.2))


#model.add(Conv1D(16, 16, strides=1, padding='same'))
#model.add(TimeDistributed(Dense(32, activation='linear')))
#model.add(GRU(512, return_sequences=True, activation='linear'))
model.add(LSTM(128, return_sequences=True, activation='linear'))
model.add(Conv1D(64, 64, strides=1, padding='same'))
model.add(Dense(128, activation="linear"))#,kernel_regularizer=regularizers.l1_l2(l1=1e-4, l2=1e-6)
model.add(Dropout(0.2))
#model.add(BatchNormalization())

model.add(Dense(1,activation='linear'))

model.compile(optimizer='adamax',loss="mse",metrics=['accuracy'])
model.fit(X_train,y_train,epochs=8000, batch_size=256, verbose=1, validation_split=0.1, callbacks=callback)

可能是什么问题?

2个回答

这意味着您的模型过度拟合了训练集。尝试通过减少每一层的神经元数量来简化模型。这会降低您的训练准确性,但可能会提高您的验证准确性。

你知道当训练和验证精度都徘徊在相同的值附近时,你并没有过度拟合。

您的模型可能过度拟合。您可以尝试以下事情(或这些事情的混合):

  • 移除层或减少神经元的数量
  • 使用 dropout 技术
  • 使用正则化(例如 L1,L2)
  • 使用数据增强

复制自:https ://www.kdnuggets.com/2019/12/5-techniques-prevent-overfitting-neural-networks.html