利用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 subprocess模块学习总结
Mar 13 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
Python实现包含min函数的栈
Apr 29 Python
Python中字符串的格式化方法小结
May 03 Python
[原创]pip和pygal的安装实例教程
Dec 07 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
python2.7实现爬虫网页数据
May 25 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
python连接PostgreSQL过程解析
Feb 09 Python
Python chardet库识别编码原理解析
Feb 18 Python
jupyter notebook的安装与使用详解
May 18 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 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数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
Laravel框架表单验证详解
2014/09/04 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
php实现的双色球算法示例
2017/06/20 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
2012/02/07 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
Python中__init__和__new__的区别详解
2014/07/09 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python实现决策树分类
2018/08/30 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
详解Django配置JWT认证方式
2020/05/09 Python
Python几种常见算法汇总
2020/06/02 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
你对IPv6了解程度
2016/02/09 面试题
英语专业个人求职自荐信
2013/09/21 职场文书
导游的职业规划书范文
2013/12/27 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python