利用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入门教程
Feb 08 Python
详解Python3.1版本带来的核心变化
Apr 07 Python
Python OS模块常用函数说明
May 23 Python
python处理大数字的方法
May 27 Python
Python扫描IP段查看指定端口是否开放的方法
Jun 09 Python
Python抓取手机号归属地信息示例代码
Nov 28 Python
python 二分查找和快速排序实例详解
Oct 13 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
python匿名函数用法实例分析
Aug 03 Python
TensorFlow获取加载模型中的全部张量名称代码
Feb 11 Python
使用python从三个角度解决josephus问题的方法
Mar 27 Python
Python是什么 Python的用处
May 26 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 Smarty生成EXCEL文档的代码
2008/08/23 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
CentOS安装php v8js教程
2015/02/26 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
Python中的time模块与datetime模块用法总结
2016/06/30 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
实例详解Python模块decimal
2019/06/26 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
少先队学雷锋活动月总结
2014/03/09 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
省文明单位申报材料
2014/05/08 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
十八大标语口号
2014/10/09 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL