tensorflow学习(9)- 使用tensorboard可视化网络

前言

  上一节使用adam优化器成功将手写数字识别的识别率优化到98%以上,这一节学习tensorboard的使用。

tensorboard

  TensorBoard是一个可视化工具,它可以用来展示网络图、张量的指标变化、张量的分布情况等。特别是在训练网络的时候,我们可以设置不同的参数(比如:权重W、偏置B、卷积层数、全连接层数等),使用TensorBoader可以很直观的帮我们进行参数的选择。

名字空间

   name_scope: 为了更好地管理变量的命名空间而提出的。比如在 tensorboard 中,因为引入了 name_scope, 我们的 Graph 看起来才井然有序。
例如:

with tf.name_scope("input"):
    x = tf.placeholder(tf.float32, [None, 784],name="x-input")
    y = tf.placeholder(tf.float32, [None, 10] ,name="y-input")

  在tensorboard中就有如下的效果:
在这里插入图片描述

代码

  将所有的变量都加以名字空间包含,则可以看到整个网络清晰的结构。

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

with tf.name_scope("input"):
    x = tf.placeholder(tf.float32, [None, 784],name="x-input")
    y = tf.placeholder(tf.float32, [None, 10] ,name="y-input")

# 创建简单神经网络(可优化)
with tf.name_scope("layout"):
    with tf.name_scope("wights"):
        W = tf.Variable(tf.zeros([784, 10]),name="W")
    with tf.name_scope("biases"):
        b = tf.Variable(tf.zeros([10]),name="b")
    with tf.name_scope("wx_plus_b"):
        wx_plus_b=tf.matmul(x, W) + b
    with tf.name_scope("predict"):
        predict = tf.nn.softmax(wx_plus_b)  # softmax将输出信号转化为概率值(10个概率值)

# 可使用交叉熵代价函数来优化
with tf.name_scope("loss"):
    loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y,logits=predict))
# 使用梯度下降法训练,使得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_predict"):
        correct_predict = tf.equal(tf.argmax(y, 1), tf.argmax(predict, 1))  # argmax返回一维张量中最大值所在的位置
    # 求准确率
    with tf.name_scope("accu"):
        accuracy = tf.reduce_mean(tf.cast(correct_predict, tf.float32))  # reduce_mean求平均值

with tf.Session() as sess:
    sess.run(init)
    write=tf.summary.FileWriter("logs/",sess.graph)
    for epoch in range(1):  # 可优化
        for batch in range(n_batch):  # 把所有图片训练一次
            batch_xs, batch_ys = mnist.train.next_batch(batch_size)
            sess.run(train_step, feed_dict={x: batch_xs, y: batch_ys})
        # 用测试数据来检验训练好的模型
        acc = sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels})
        print("Iter " + str(epoch) + "Test accuracy" + str(acc))

win + R打开windows的终端,切换盘符到你的代码的路径对应的盘,我这里是e盘。
切换盘符:

e:

启动tensorboard:

tensorboard --logdir=E:\py_code\tensorflow\logs

在这里插入图片描述
  最底下的url是我们tensorboard的ip,在谷歌浏览器中网址栏输入即可进入tensorboard的网页,点击GRAPHS即可看到网络的图:
在这里插入图片描述

发布了81 篇原创文章 · 获赞 21 · 访问量 8802

猜你喜欢

转载自blog.csdn.net/qq_37668436/article/details/105309524