利用Tensorboard绘制网络识别准确率和loss曲线实例


Posted in Python onFebruary 15, 2020

废话不多说,直接上代码看吧!

import tensorflow as tf 
from tensorflow.examples.tutorials.mnist import input_data 
 
#载入数据集 
mnist = input_data.read_data_sets("MNIST_data",one_hot=True) 
 
#每个批次的大小和总共有多少个批次 
batch_size = 100 
n_batch = mnist.train.num_examples // batch_size 
 
#定义函数
def variable_summaries(var):
  with tf.name_scope('summaries'):
    mean = tf.reduce_mean(var)
    tf.summary.scalar('mean', mean) #平均值
    with tf.name_scope('stddev'):
      stddev = tf.sqrt(tf.reduce_mean(tf.square(var-mean)))
    tf.summary.scalar('stddev', stddev) #标准差
    tf.summary.scalar('max', tf.reduce_max(var))
    tf.summary.scalar('min', tf.reduce_min(var))
    tf.summary.histogram('histogram', var) #直方图
    
#命名空间
with tf.name_scope("input"):
  #定义两个placeholder 
  x = tf.placeholder(tf.float32,[None,784], name = "x_input") 
  y = tf.placeholder(tf.float32,[None,10], name = "y_input") 
 
with tf.name_scope("layer"):
  #创建一个简单的神经网络 
  with tf.name_scope('weights'):
    W = tf.Variable(tf.zeros([784,10]), name='W') 
    variable_summaries(W)
  with tf.name_scope('biases'):  
    b = tf.Variable(tf.zeros([10]), name='b') 
    variable_summaries(b)
  with tf.name_scope('wx_plus_b'): 
    wx_plus_b = tf.matmul(x,W)+b
  with tf.name_scope('softmax'):
    prediction = tf.nn.softmax(wx_plus_b) 
 
with tf.name_scope('loss'):
  #交叉熵代价函数 
  loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=prediction)) 
  tf.summary.scalar('loss', loss)
with tf.name_scope('train'):
  #使用梯度下降法 
  train_step = tf.train.GradientDescentOptimizer(0.2).minimize(loss) 
 
#初始化变量 
init = tf.global_variables_initializer() 
 
with tf.name_scope('accuracy'):
  with tf.name_scope('correct_prediction'):
    #结果存放在一个布尔型列表中 
    correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))#argmax返回一维张量中最大的值所在的位置 
  with tf.name_scope('accuracy'):
    #求准确率 
    accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32)) 
    tf.summary.scalar('accuracy', accuracy)
 
#合并所有的summary
merged = tf.summary.merge_all()
 
with tf.Session() as sess: 
  sess.run(init) 
  writer = tf.summary.FileWriter("log/", sess.graph) #写入到的位置
  for epoch in range(51): 
    for batch in range(n_batch): 
      batch_xs,batch_ys = mnist.train.next_batch(batch_size) 
      summary,_ = sess.run([merged,train_step],feed_dict={x:batch_xs, y:batch_ys}) 
    
    writer.add_summary(summary,epoch) 
    acc = sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels}) 
    print("epoch " + str(epoch)+ "  acc " +str(acc))

运行程序,打开命令行界面,切换到 log 所在目录,输入

tensorboard --logdir= --logdir=C:\Users\Administrator\Desktop\Python\log

接着会返回一个链接,类似 http://PC-20160926YCLU:6006

打开谷歌浏览器或者火狐,输入网址即可查看搭建的网络结构以及识别准确率和损失函数的曲线图。

注意:如果对网络进行更改之后,在运行之前应该先删除log下的文件,在Jupyter中应该选择Kernel----->Restar & Run All, 否则新网络会和之前的混叠到一起。因为每次的网址都是一样的,在浏览器刷新页面即可。

以上这篇利用Tensorboard绘制网络识别准确率和loss曲线实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python中的线程进行网络编程的入门教程
Apr 15 Python
使用rpclib进行Python网络编程时的注释问题
May 06 Python
python回调函数用法实例分析
May 09 Python
使用Python实现简单的服务器功能
Aug 25 Python
神经网络python源码分享
Dec 15 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
Feb 21 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
python 计算两个列表的相关系数的实现
Aug 29 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
jupyter notebook读取/导出文件/图片实例
Apr 16 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
tensorboard显示空白的解决
Feb 15 #Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 #Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 #Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 #Python
基于TensorBoard中graph模块图结构分析
Feb 15 #Python
使用Bazel编译TensorBoard教程
Feb 15 #Python
TensorBoard 计算图的可视化实现
Feb 15 #Python
You might like
PHP 文件扩展名 获取函数
2009/06/03 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
纯javascript实现图片延时加载方法
2015/08/21 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
python的concat等多种用法详解
2018/11/28 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Python 下载及安装详细步骤
2019/11/04 Python
Python如何获取Win7,Win10系统缩放大小
2020/01/10 Python
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
会计电算化专业个人的自我评价
2013/11/24 职场文书
关于中国梦的演讲稿
2014/04/23 职场文书
多媒体教室标语
2014/06/26 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
保姆聘用合同
2015/09/21 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书