利用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操作MongoDB基础知识
Nov 01 Python
python中Genarator函数用法分析
Apr 08 Python
探究Python的Tornado框架对子域名和泛域名的支持
May 02 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
Python实现堆排序的方法详解
May 03 Python
python使用super()出现错误解决办法
Aug 14 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
pytorch permute维度转换方法
Dec 14 Python
20行python代码实现人脸识别
May 05 Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
python 视频下载神器(you-get)的具体使用
Jan 06 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与ASP
2006/10/09 PHP
PHP 5.3.0 安装分析心得
2009/08/07 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
shiro授权的实现原理
2017/09/21 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
Python set集合类型操作总结
2014/11/07 Python
python自动裁剪图像代码分享
2017/11/25 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python多进程读图提取特征存npy
2019/05/21 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
jupyter notebook 重装教程
2020/04/16 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
python 解决函数返回return的问题
2020/12/05 Python
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
档案接收函范文
2014/01/10 职场文书
面试后的英文感谢信
2014/02/01 职场文书
大学生励志演讲稿
2014/04/25 职场文书
淘宝好评语大全
2014/05/05 职场文书
精神文明建设标语
2014/06/16 职场文书
外贸业务员求职信
2014/06/16 职场文书
民事诉讼授权委托书范文
2014/08/02 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
交通事故被告代理词
2015/05/23 职场文书
Python实现打乒乓小游戏
2021/09/25 Python