本节基于回归学习对 MNIST 数据集进行处理,但将添加一些 TensorBoard 总结以便更好地理解 MNIST 数据集。

MNIST由https://www.tensorflow.org/get_started/mnist/beginners提供。

大部分人已经对 MNIST 数据集很熟悉了,它是机器学习的基础,包含手写数字的图像及其标签来说明它是哪个数字。

对于逻辑回归,对输出 y 使用独热(one-hot)编码。因此,有 10 位表示输出,每位的值为 1 或 0,独热意味着对于每个图片的标签 y,10 位中仅有一位的值为 1,其余的为 0。

因此,对于手写数字 8 的图像,其编码值为 [0000000010]:

具体做法

  1. 导入所需的模块:


     
  2. 可以从模块 input_data 给出的 TensorFlow 示例中获取 MNIST 的输入数据。该 one_hot 标志设置为真,以使用标签的 one_hot 编码。这产生了两个张量,大小为 [55000,784] 的 mnist.train.images 和大小为 [55000,10] 的 mnist.train.labels。mnist.train.images 的每项都是一个范围介于 0 到 1 的像素强度:

     
  3. 在 TensorFlow 图中为训练数据集的输入 x 和标签 y 创建占位符:

     
  4. 创建学习变量、权重和偏置:

     
  5. 创建逻辑回归模型。TensorFlow OP 给出了 name_scope("wx_b"):

     
  6. 训练时添加 summary 操作来收集数据。使用直方图以便看到权重和偏置随时间相对于彼此值的变化关系。可以通过 TensorBoard Histogtam 选项卡看到:

     
  7. 定义交叉熵(cross-entropy)和损失(loss)函数,并添加 name scope 和 summary 以实现更好的可视化。使用 scalar summary 来获得随时间变化的损失函数。scalar summary 在 Events 选项卡下可见:

     
  8. 采用 TensorFlow GradientDescentOptimizer,学习率为 0.01。为了更好地可视化,定义一个 name_scope:

     
  9. 为变量进行初始化:

     
  10. 组合所有的 summary 操作:

     
  11. 现在,可以定义会话并将所有的 summary 存储在定义的文件夹中:

     
  12. 经过 30 个周期,准确率达到了 86.5%;经过 50 个周期,准确率达到了 89.36%;经过 100 个周期,准确率提高到了 90.91 %。

解读分析

这里使用张量 tensorboard--logdir=garphs 运行 TensorBoard。在浏览器中,导航到网址 localhost:6006 查看 TensorBoard。该模型图如下:

 

 

在 Histogram 选项卡下,可以看到权重(weights)和偏置(biases)的直方图:


 

权重和偏置的分布如下:


 

可以看到,随着时间的推移,偏置和权重都发生了变化。在该示例中,根据 TensorBoard 中的分布可知偏置变化的范围更大。在 Events 选项卡下,可以看到 scalar summary,即本示例中的交叉熵。下图显示交叉熵损失随时间不断减少:

最新文章

  1. Android ViewPager打造3D画廊
  2. [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)
  3. [Search Engine] 搜索引擎技术之倒排索引
  4. day10---异步I/O,gevent协程
  5. 2015年8月17日,杨学明老师《产业互联网化下的研发模式转型》在中国科学院下属机构CNNIC成功举办!
  6. js系列(9)js的运用(一)
  7. 嵌入式 H264视频通过RTMP直播
  8. html5 canvas图片渐变
  9. 欧拉(BC)
  10. windows 快捷方式(.lnk)代码执行漏洞(CVE-2017-8464 )[附EXP生成工具]
  11. 安卓测试工具uiautomator无法打开失败报错解决方案
  12. 066 基于checkpoint的HA机制实现
  13. Docker Kubernetes 高可用架构设计
  14. CentOS_mini下安装docker 之 yum mount
  15. 声反馈抑制使用matlab/simulink仿真
  16. 安卓 build/core/Makefile 以及main.mk
  17. ThinkPHP使用memcache缓存服务器
  18. HTML5-Canvas 初认识
  19. C 语言 mmap
  20. 103. Binary Tree Zigzag Level Order Traversal -----层序遍历

热门文章

  1. AspectJ JoinPoint及ProceedingJoinPoint 简要api文档
  2. shiro简单的认证功能
  3. oracle 多表连接查询 join
  4. centos7 安装rpm版的mysql遇到坑——误删root用户的恢复
  5. JS中Class的两种写法
  6. 微信小程序初探--写个扫雷分享给你玩
  7. 【JavaScript数据结构系列】02-栈Stack
  8. flutter 环境出错后排查
  9. 画出决策边界线--plot_2d_separator.py源代码【来自python机器学习基础教程】
  10. JavaScript ——内部函数和匿名函数