首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的CNN中实现dropout会使训练精度下降

问在我的CNN中实现dropout会使训练精度下降
EN

Stack Overflow用户
提问于 2017-02-14 12:17:33
回答 1查看 1K关注 0票数 1

通过实现卷积神经网络进行图像分类,我在训练集准确率(98%)上取得了良好的结果,但测试集准确率仍然很低(约82%)。我正面临着一个过度适应的问题。我试图通过实现dropout函数(保留50%的神经元)来解决这个问题,但事实证明,这个解决方案使我的训练准确率下降到80%!这是不是意味着我的CNN中应该有更多的神经元?我能做些什么来防止这个问题?

我正在使用Tensorflow库,下面是训练循环的代码片段:(我不确定我是否正确实现了它)

代码语言:javascript
复制
for epoch in range(22000):
    permutation=np.random.permutation(19600)
    permutation=permutation[0:200]
    batch=[train_set[permutation],train_label[permutation]]
    summary,model,cost=sess.run([merged,train_step,cross_entropy],feed_dict={X:batch[0],Yreal:batch[1],drop_value:0.5}) #training with 50% of the neurons
    train_writer.add_summary(summary,epoch)
    print(cost)
    if epoch%500==0:
        print(epoch)
        summary=sess.run(merged,feed_dict={X:test_set[0:300],Yreal:test_label[0:300],drop_value:1}) #evaluating testing set accuracy using 100% of the neurons
        test_writer.add_summary(summary,epoch)
EN

回答 1

Stack Overflow用户

发布于 2017-02-14 12:36:53

如果您的测试精度也与在丢失情况下的训练精度大致相同,那么您可以增加神经元的数量。此外,0.50作为初始辍学是相当高的。从0.25开始(即dropout层的概率保持为0.75 )。.Also,我建议使用一些数据增强,如旋转,扭曲亮度,根据数据的性质交换颜色通道,并使用一些正则化。还要绘制学习曲线,检查测试精度如何随着训练精度的变化而变化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42217777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档