本文是《TensorFlow从浅入深》系列之第7篇

TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法)

TensorFlow从浅入深系列之二 -- 教你通过思维导图深度理解深层神经网络

TensorFlow从浅入深系列之三 -- 教你如何对MNIST手写识别

TensorFlow从浅入深系列之四 -- 教你深入理解过拟合问题(正则化)

TensorFlow从浅入深系列之五 -- 教你详解滑动平均模型

TensorFlow从浅入深系列之六 -- 教你深入理解经典损失函数(交叉熵、均方误差)

在(TensorFlow从浅入深系列之三 -- 教你如何对MNIST手写识别)使用神经网络解决MNIST问题的程序中,开始的位置设置了初始学习率、学习率衰减率、隐藏层节点数、迭代轮数等7中不同的参数。一般情况下,配置神经网络的这些参数都是需要通过实验来调整的。

因为神经网络是对未知数据提供判断,所以我们不能直接通过模型在测试数据上的效果来选择参数,这样容易导致神经网络模型过度拟合测试数据,从而失去对未知数据的预判能力。

所以,为了顾及模型在未知数据上的效果,需要保证测试数据在训练过程中是不可见的

因此,为了评测神经网络模型在不同参数下的效果,一般会从训练数据中抽取一部分作为验证数据。使用验证数据评判不同参数取值下的表现。有时也可以采用交叉验证的方式来验证模型效果,但是采用交叉验证会花费大量时间。所以在海里数据的情况下,一般更多地采用验证数据集的形式来评判模型的效果。


在(TensorFlow从浅入深系列之三 -- 教你如何对MNIST手写识别)加入以下代码,得到每1000轮迭代后,使用滑动平均的模型在验证数据和测试数据上的正确率。

# 计算滑动平均模型在测试数据和验证数据上的正确率
validate_acc = sess.run(accuracy, feed_dict=validate_feed)
test_acc = sess.run(accuracy, feed_dict=test_feed)# 输出正确率信息。
print('After %d training step(s), validation accuracy using average model is %g, ' 'test accuracy using average model is %g' % (i, validate_acc, test_acc))

图5-2给出了通过上面代码得到的每1000轮滑动平均模型在不同数据集上的正确率曲线。其中灰色曲线表示随着迭代轮数的增加,模型在验证数据上的正确率;黑色的曲线表示在测试数据上的正确率。从图中可以看出,虽然这两条曲线不会完全重合,但是这两条曲线的趋势基本一样,而且他们的相关系数大于0.999。说明,在MNIST问题上,完全可以通过模型在验证数据上的表现来判断一个模型的优劣。

以上结论是针对MNIST数据集的,对于其他问题,需要具体问题具体分析。一般来说,验证数据分布越接近测试数据分布,模型在验证数据上的表现可以体现模型在测试数据上的表现。神经网络在验证数据上的效果来选取模型的参数是一个可行的方案。

【TensorFlow】TensorFlow从浅入深系列之七 -- 教你使用验证数据集判断模型效果相关推荐

  1. 【TensorFlow】TensorFlow从浅入深系列之五 -- 教你详解滑动平均模型

    本文是<TensorFlow从浅入深>系列之第5篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...

  2. 【TensorFlow】TensorFlow从浅入深系列之八 -- 教你学会变量管理

    本文是<TensorFlow从浅入深>系列之第8篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...

  3. 【TensorFlow】TensorFlow从浅入深系列之六 -- 教你深入理解经典损失函数(交叉熵、均方误差)

    本文是<TensorFlow从浅入深>系列之第6篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...

  4. 【TensorFlow】TensorFlow从浅入深系列之四 -- 教你深入理解过拟合问题(正则化)

    本文是<TensorFlow从浅入深>系列之第4篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...

  5. 【TensorFlow】TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法)

    本文是<TensorFlow从浅入深>系列之第1篇 [TensorFlow]TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) 在训练神经网络时,需要设置学习率( ...

  6. 【TensorFlow】TensorFlow从浅入深系列之三 -- 教你如何对MNIST手写识别

    本文是<TensorFlow从浅入深>系列之第3篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...

  7. 【TensorFlow】TensorFlow从浅入深系列之十三 -- 教你深入理解模型持久化(模型保存、模型加载)

    本文是<TensorFlow从浅入深>系列之第13篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...

  8. 【TensorFlow】TensorFlow从浅入深系列之十二 -- 教你深入理解卷积神经网络中的池化层

    本文是<TensorFlow从浅入深>系列之第12篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...

  9. 【TensorFlow】TensorFlow从浅入深系列之十一 -- 教你深入理解卷积神经网络中的卷积层

    本文是<TensorFlow从浅入深>系列之第11篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...

最新文章

  1. 先进一站式IP及定制
  2. linux qt5.7下打地鼠源程序,基于QT的打地鼠游戏
  3. 独家 | 手把手教你用R语言做回归后的残差分析(附代码)
  4. 机器学习笔试题精选(七)
  5. 总结从linux - windows 上(GCC与MSVC 2015) 移植C或者C++代码时候遇到的编译和链接问题
  6. 前端传递多个数组以及其他参数,springboot后台如何接收
  7. Awesomplete 屌爆了
  8. 【原创】Erlang 之 match 和 compare equal
  9. 如何看待0.5元可买到身份匹配的人脸数据?
  10. angularJs中datatable实现
  11. 在SharePoint 2010中创建联系人Web数据库网站
  12. 【知识兔】Excel多级联动关联下拉菜单的制作,一看就会!
  13. 8类网线利弊_7类网线和8类网线到底有何不同?
  14. 7大Python IDE工具推荐
  15. (11) IFC中物理文件解析 (Industry Foundation Class)
  16. 计算机桌面蓝字,教你电脑桌面图标有蓝色阴影怎么去掉
  17. 不要在循环中访问数据库,这样会严重影响数据库性能
  18. 小米5s 小米6 MIUI 系统 删除温控 破解限制
  19. react使用二级(多级)路由(rout)实现局部跳转
  20. 计算机策略组 网络,组策略怎么用 玩转电脑组策略技巧 (全文)

热门文章

  1. java导入数据 neo4j_java-neo4j-使用neo4j剩余图数据库进行批量插...
  2. 串口 多个activity 安卓_一个Activity实时向另一个Activity发送消息
  3. u盘弹出工具_mac怎么格式化u盘?
  4. 比特币一种点对点的电子现金系统是哪一年诞生的_阎王解读比特币白皮书:点对点电子现金系统...
  5. windows2008强制卸载辅域和元数据
  6. iphone储存空间系统怎么清理_iPhone储存空间里其他占了几十GB,怎样彻底删除它?...
  7. python中回归拟合图_seaborn库:线性回归拟合图
  8. Hive之函数与自定义函数
  9. 工作中的沟通及信息传递
  10. ERP通用存储过程封装(三)