利用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求crc32值的方法
Oct 05 Python
Python解析xml中dom元素的方法
Mar 12 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
python使用__slots__让你的代码更加节省内存
Sep 05 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
使用Python生成200个激活码的实现方法
Nov 22 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
python制作一个简单的gui 数据库查询界面
Nov 19 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 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 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
php之Memcache学习笔记
2013/06/17 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
一个tab标签切换效果代码
2009/03/27 Javascript
js tab 选项卡
2009/04/26 Javascript
超简单的jquery的AJAX用法
2010/05/10 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python自动化测试实例解析
2014/09/28 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
python实现人民币大写转换
2018/06/20 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Python算法中的时间复杂度问题
2019/11/19 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
初中班主任评语大全
2014/04/24 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android