Keras模型测试准确率震荡大

今天在Keras训练了一个模型,发现模型的训练accuracy和测试accuracy的准确率偏差比较大,如下未加dropout
在问了些大佬后(感谢大佬),我的这个原因很可能是因为过拟合导致的差距比较大,之后在每个层之间都加入了dropout,再重新训练模型得到了下面这样的效果:加了dropout
可以看到,效果还是很明显的,接下来就是调整dropout里面的参数和dropout层数的事情了。
当然,有些模型accuracy震荡比较厉害不光是过拟合的原因,也有可能是数据本身的原因,那就需要实验者自己查看数据哪里出现问题了,这里给出Keras添加dropout的方法。

def self_mlp():
    model=Sequential()
    model.add(Dense(units=200,input_dim=95,activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(units=200,activation='relu'))
    model.add(Dense(units=200,activation='relu'))
#     model.add(Dropout(0.2))
    model.add(Dense(units=200,activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(units=200,activation='relu'))
    model.add(Dropout(0.2))
    model.add(Dense(units=256,activation='softmax'))
    model.compile(optimizer=rms,loss='categorical_crossentropy',metrics=['accuracy'])
    return model

dropout层越多,里面的参数越大就越有可能导致欠拟合,所以需要自己不断尝试。
本人小白,要是有大佬看见我哪里不正确,希望能提醒下(手动滑稽)

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在使用Keras训练模型时,如果测试准确率始终不变,可能有以下几个原因: 1. 模型设计问题:模型可能存在欠拟合或过拟合的情况。欠拟合指模型过于简单,无法充分拟合训练数据,导致在测试集上准确率不变;过拟合则是模型过于复杂,过度拟合了训练数据,对于新样本的预测能力较差。通过调整模型的结构、参数和超参数,可以解决这些问题。 2. 数据问题:测试集的数据可能与训练集的数据分布不一致,导致模型测试集上的表现不佳。这可能是由于训练集和测试集之间的数据划分不合理,应该重新划分数据集。 3. 训练过程问题:训练的迭代轮数可能不足,或者学习率设置不合适。增加训练轮数或适当调整学习率,可能会改善模型测试集上的效果。 4. 数据预处理问题:在使用Keras前,对数据进行的预处理操作可能不合理。预处理的方式可能导致模型训练测试集上的输入数据不一致,从而影响准确率。应该检查数据预处理的流程和参数设置是否正确。 5. 随机性问题:训练测试数据的随机划分可能导致偶然的结果。可以通过多次随机划分数据集并进行实验来验证模型的性能稳定性。 综上所述,当Keras训练时,测试准确率不变可能是由于模型设计问题、数据问题、训练过程问题、数据预处理问题或随机性问题导致的。在解决这些问题时,可以逐个排除,逐步调整和优化模型,以提高测试集的准确率

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值