利用Tensorboard绘制网络识别准确率和loss曲线实例

废话不多说,直接上代码看吧!

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曲线实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Tensorflow的可视化工具Tensorboard的初步使用详解

    当使用Tensorflow训练大量深层的神经网络时,我们希望去跟踪神经网络的整个训练过程中的信息,比如迭代的过程中每一层参数是如何变化与分布的,比如每次循环参数更新后模型在测试集与训练集上的准确率是如何的,比如损失值的变化情况,等等.如果能在训练的过程中将一些信息加以记录并可视化得表现出来,是不是对我们探索模型有更深的帮助与理解呢? Tensorflow官方推出了可视化工具Tensorboard,可以帮助我们实现以上功能,它可以将模型训练过程中的各种数据汇总起来存在自定义的路径与日志文件中,然后

  • 解决Tensorboard 不显示计算图graph的问题

    问 题:直接载入TensorBoard 总是提示No dashboard are active for current data set.根本不显示计算图. 原 因:文件路径问题,TensorBoard 未读取到文件数据,自然无法显示结果. 解决方法:设置文件路径. 程序运行完后在cmd 运行栏输入TensorBoard –logdir='graph文件所在的文件夹的路径'.为简化输入路径,可直接在该文件夹所在的文件夹中启动cmd. 以上这篇解决Tensorboard 不显示计算图graph的问

  • TensorBoard 计算图的查看方式

    Tensorflow计算图的展示: 1. 设置生成计算图,运行程序会自动生成"logs"日志文件 2. 在Terminal下输入指令 如果当前路径为程序日志路径(即"logs"所在路径),直接输入指令 tensorboard --logdir = logs 如果当前路径不是程序日志路径(即"logs"所在路径),可以 cd "日志的绝对路径"进入"logs"所在的路径,或者 直接输入指令 tensorboa

  • 使用Tensorboard工具查看Loss损失率

    在python程序中添加tensoboard一系列代码我就不一一写了.查找资料就可以找到很多这方面的内容. 今天我主要是想说下,如何在cmd中录入命令,查看. 环境:win10 python开发环境:spyder(tensorflow) 这个是从"Anaconda3"软件中下载的. 准备条件是:必须激活TensorFlow. (TensorFlow)C:\User\Admn> 这种状态算是激活了. 切换到当前生成的tensorboard的路径下 使用以下命令: tensorboa

  • 利用Tensorboard绘制网络识别准确率和loss曲线实例

    废话不多说,直接上代码看吧! 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_

  • pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率

    我用的是Anaconda3 ,用spyder编写pytorch的代码,在Anaconda3中新建了一个pytorch的虚拟环境(虚拟环境的名字就叫pytorch). 以下内容仅供参考哦~~ 1.首先打开Anaconda Prompt,然后输入activate pytorch,进入pytorch. 2.输入pip install tensorboardX,安装完成后,输入python,用from tensorboardX import SummaryWriter检验是否安装成功.如下图所示: 3.

  • Python绘制loss曲线和准确率曲线实例代码

    目录 引言 一.数据读取与存储部分 二.绘制 loss 曲线 三.绘制准确率曲线 总结 引言 使用 python 绘制网络训练过程中的的 loss 曲线以及准确率变化曲线,这里的主要思想就时先把想要的损失值以及准确率值保存下来,保存到 .txt 文件中,待网络训练结束,我们再拿这存储的数据绘制各种曲线. 其大致步骤为:数据读取与存储 - > loss曲线绘制 - > 准确率曲线绘制 一.数据读取与存储部分 我们首先要得到训练时的数据,以损失值为例,网络每迭代一次都会产生相应的 loss,那么我

  • Python利用DNN实现宝石识别

    目录 任务描述 深度神经网络(DNN) 数据集介绍 1.数据准备 2.定义模型 3.训练模型 4.模型评估 5.模型预测 任务描述 本次实践是一个多分类任务,需要将照片中的宝石分别进行识别,完成宝石的识别 实践平台:百度AI实训平台-AI Studio.PaddlePaddle1.8.0 动态图 深度神经网络(DNN) 深度神经网络(Deep Neural Networks,简称DNN)是深度学习的基础,其结构为input.hidden(可有多层).output,每层均为全连接. 数据集介绍 数

  • Python3 利用face_recognition实现人脸识别的方法

    前言 之前实践了下face++在线人脸识别版本,这回做一下离线版本.github 上面有关于face_recognition的相关资料,本人只是做个搬运工,对其中的一些内容进行搬运,对其中一些例子进行实现. 官方描述: face_recognition是一个强大.简单.易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,特别是兼容树莓派系统.本项目是世界上最简洁的人脸识别库,你可以使用Python和命令行工具提取.识别.操作人脸.本项目的人脸识别是基于业内领先的C++开源库 dlib中

  • 解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题

    遇到的问题 当时自己在使用Alexnet训练图像分类问题时,会出现损失在一个epoch中增加,换做下一个epoch时loss会骤然降低,一开始这个问题没有一点头绪,我数据也打乱了,使用的是tf.train.shuffle_batch 在capacity中设置一个值,比如是1000吧,每次取一千个数据后将这一千个数据打乱,本次使用的数据集就是每个种类1000多,而我加载数据时是一类一类加载的,这就造成了每一批次的开始可以跟前一类数据做打乱处理,但是在中间数据并不能达到充分的shuffle 解决问题

  • Python摸鱼神器之利用树莓派opencv人脸识别自动控制电脑显示桌面

    前言 老早就看到新闻员工通过人脸识别监控老板来摸鱼. 有时候摸鱼太入迷了,经常在上班时间玩其他的东西被老板看到.自从在咸鱼上淘了一个树莓派3b,尝试做了一下内网穿透,搭建网站就吃灰了,接下来突发奇想就买了一个摄像头和延长线 接下来就是敲代码了 环境 树莓派3+ python3.7 win7 python3.6 过程 首先树莓派和电脑要在一个内网下面,就是一个路由器下面吧.要在树莓派设置里面开启摄像头,然后安装cv2,cv2有很多依赖库需要手动安装,很是费脑筋.原理介绍一下,人脸识别主要是依赖op

  • 手把手教你利用opencv实现人脸识别功能(附源码+文档)

    目录 一.环境 二.使用Haar级联进行人脸检测 三.Haar级联结合摄像头 四.使用SSD的人脸检测 五. SSD结合摄像头人脸检测 六.结语 一.环境 pip install opencv-python python3.9 pycharm2020 人狠话不多,直接上代码,注释在代码里面,不说废话. 二.使用Haar级联进行人脸检测 测试案例: 代码:(记得自己到下载地址下载对应的xml) # coding=gbk """ 作者:川川 @时间 : 2021/9/5 16:3

  • Python利用 SVM 算法实现识别手写数字

    目录 前言 使用 SVM 进行手写数字识别 参数 C 和 γ 对识别手写数字精确度的影响 完整代码 前言 支持向量机 (Support Vector Machine, SVM) 是一种监督学习技术,它通过根据指定的类对训练数据进行最佳分离,从而在高维空间中构建一个或一组超平面.在博文<OpenCV-Python实战(13)--OpenCV与机器学习的碰撞>中,我们已经学习了如何在 OpenCV 中实现和训练 SVM 算法,同时通过简单的示例了解了如何使用 SVM 算法.在本文中,我们将学习如何

  • 如何利用React实现图片识别App

    先把效果图给大家放上来 个人觉得效果还行.识别不太准确是因为这个 app学习图片的时间太短(电脑太卡). (笔者是 window10) 安装运行环境: npm install --global windows-build-tools(这个时间很漫长...) npm install @tensorflow/tfjs-node(这个时间很漫长...) 项目目录如下 train文件夹 index.js(入口文件) const tf = require('@tensorflow/tfjs-node')

随机推荐