利用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操作MySQL数据库的方法分享
May 29 Python
Python下载懒人图库JavaScript特效
May 28 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
django框架如何集成celery进行开发
May 24 Python
python删除某个字符
Mar 19 Python
对python判断是否回文数的实例详解
Feb 08 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
python tkinter实现屏保程序
Jul 30 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
python GUI库图形界面开发之PyQt5动态加载QSS样式文件
Feb 25 Python
python爬虫 requests-html的使用
Nov 30 Python
详解Django中的FBV和CBV对比分析
Mar 01 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 中的4种标记风格介绍
2012/05/10 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
JavaScript效率调优经验
2009/06/04 Javascript
JSON 编辑器实现代码
2009/12/06 Javascript
JavaScript学习历程和心得小结
2010/08/16 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
python的三目运算符和not in运算符使用示例
2014/03/03 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
python实现简易版计算器
2020/06/22 Python
python deque模块简单使用代码实例
2020/03/12 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
视光学专业毕业生推荐信
2013/10/28 职场文书
中学教师请假制度
2014/02/03 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
市场营销方案范文
2014/03/11 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
2014年销售员工作总结
2014/12/01 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
通过Python把学姐照片做成拼图游戏
2022/02/15 Python