利用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中使用matplotlib模块绘制数据图的示例
May 04 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
Python PyCharm如何进行断点调试
Jul 05 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
Aug 13 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
python二分法查找算法实现方法【递归与非递归】
Dec 06 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
python实现贪吃蛇双人大战
Apr 18 Python
浅谈django 重载str 方法
May 19 Python
python的pip有什么用
Jun 17 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 16 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的explode和implode的使用说明
2011/07/17 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
Yii分页用法实例详解
2014/12/04 PHP
php-msf源码详解
2017/12/25 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
微信小程序签到功能
2018/10/31 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
python的re模块应用实例
2014/09/26 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
python中的&&及||的实现示例
2019/08/07 Python
Python 列表的清空方式
2020/01/13 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
建筑项目策划书
2014/01/13 职场文书
青年教师典范事迹材料
2014/01/31 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书