利用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多线程编程方式分析示例详解
Dec 06 Python
Python获取任意xml节点值的方法
May 05 Python
Python中的random()方法的使用介绍
May 15 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
May 29 Python
Python实现数通设备端口使用情况监控实例
Jul 15 Python
Python快速排序算法实例分析
Nov 29 Python
Python的多维空数组赋值方法
Apr 13 Python
python实现简单flappy bird
Dec 24 Python
24式加速你的Python(小结)
Jun 13 Python
django如何自己创建一个中间件
Jul 24 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
python基础之函数的定义和调用
Oct 24 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编译安装时常见错误解决办法
2015/05/28 PHP
工作需要写的一个js拖拽组件
2011/07/28 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
Python实现遍历数据库并获取key的值
2015/05/17 Python
使用Python写个小监控
2016/01/27 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python面向对象 反射原理解析
2019/08/12 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
美国零售商店:Blue&Cream
2017/04/07 全球购物
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
文员个人的求职信范文
2013/09/26 职场文书
电气工程师岗位职责
2014/01/01 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
就业协议书样本
2014/08/20 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
婚礼父母答谢词
2015/01/04 职场文书
公司会议开幕词
2015/01/29 职场文书
毕业典礼邀请函
2015/01/31 职场文书
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技