利用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 httplib,smtplib使用方法
Sep 06 Python
在Python中使用元类的教程
Apr 28 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
基于python元祖与字典与集合的粗浅认识
Aug 23 Python
Python用户推荐系统曼哈顿算法实现完整代码
Dec 01 Python
Sanic框架路由用法实例分析
Jul 16 Python
pywinauto自动化操作记事本
Aug 26 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
Jan 06 Python
浅谈Python的方法解析顺序(MRO)
Mar 05 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
Django如何在不停机的情况下创建索引
Aug 02 Python
浅谈Python __init__.py的作用
Oct 28 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
类的另类用法--数据的封装
2006/10/09 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
jquery获取input表单值的代码
2010/04/19 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
wxPython实现列表增删改查功能
2019/11/19 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
毕业生求职信的经典写法
2014/01/31 职场文书
大四自我鉴定
2014/02/08 职场文书
法律系毕业生求职信
2014/05/28 职场文书
大学生活动总结模板
2014/07/02 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
就业意向协议书
2015/01/29 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
Python基础之教你怎么在M1系统上使用pandas
2021/05/08 Python
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
SQL Server中锁的用法
2022/05/20 SQL Server
create-react-app开发常用配置教程
2022/06/25 Javascript