如何实现Tensorboard对CNN神经网络的可视化

如何实现Tensorboard对CNN神经网络的可视化

Ⅰ.参数可视化:

在这里插入图片描述

Ⅱ.结构可视化:

在这里插入图片描述

怎么使用Tensorboard实现这么professional又pretty(♥∀♥)的网络可视化操作呢?我们通过下面4个步骤进行对CNN网络t的可视化实现。

1.命名空间

使用tf.name_scope(“空间名称”)进行空间的命名,scope即为范围的意思。同时可对x,y等自变量进行名称的设置,通过name="变量名称"实现。

#命名空间
with tf.name_scope("input"):
    #   定义两个placeholder
    x = tf.placeholder(tf.float32, [None, 784], name="x_input")  # 28*28,所有像素点,None代表图片数
    y = tf.placeholder(tf.float32, [None, 10], name="y_input")  # 10,0~9所有的标签,

​ 以上述代码为例,对CNN神经网络的卷积,池化操作层以及全连接层进行空间的命名划分,如下所示:

在这里插入图片描述

2.参数概要

使用tf.summary.scalar(“参数名称”,评估参数)对变量的方差,平均值,标准差,直方图等可视化操作。这里我采用自定义函数的方法对这些方法进行统一调用。

#参数概要
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)#直方图

又或者单个调用tf.summary.scalar(“参数名称”,评估变量)。

 #   使用交叉熵代价函数
    cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y, logits=h_fc2),name="cross_entropy")
    tf.summary.scalar("loss", cross_entropy)
 #   求准确率
    accuracy = tf.reduce_mean(tf.cast(correct_predict, tf.float32), name="accuracy")
    tf.summary.scalar("loss", accuracy)

3.合并所有的summary

使用tf.summary.merge_all()合并所有的summary,在使用默认图之前。

#合并所有的summary
merged = tf.summary.merge_all()

with tf.Session() as sess:
    ......

4.保存及更新图

使用tf.summary.FileWriter(“路径”, session.graph)保存图。

使用writer.add_summary(summary, train_step)进行更新图。

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    #保存图
    writer = tf.summary.FileWriter("log/", sess.graph)
    for i in range(21):
        for batch in range(n_batch):
            batch_x, batch_y = mnist.train.next_batch(batch_size)
            summary, _ = sess.run([merged, train_step], feed_dict={x: batch_x, y: batch_y, keep_prob: 0.7})

        writer.add_summary(summary, i)
        acc = sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels, keep_prob: 1.0})
        print("Iter" + str(i) + ",Test_accuracy=" + str(acc))

​ 这里需要的注意的地方是:1.summary, _ = sess.run([merged, train_step], feed_dict={x: batch_x, y: batch_y, keep_prob: 0.7})。2.每个分批次的训练结果存在summary里面,而当一次完整训练结束后,writer.add_summary(summary, i)将summary保存更新。

ob: 0.7})。2.每个分批次的训练结果存在summary里面,而当一次完整训练结束后,writer.add_summary(summary, i)将summary保存更新。

5,需要注意的几个坑

在这里插入图片描述
1.使用cmd命令行,需要先定位至events.out.tfevents的文件路径下。(文件路径不可以有中文字符

2.使用Tensorboard --logdir=文件路径 --port=自定义端口。(使用localhost:6006可能会出现端口占用的问题。

3.打开谷歌浏览器,localhost:端口号即可访问。

4.如果更新Tensorboard的可视化,需要使用新的自定义端口,如:8009,8010等等。(如果使用相同的旧端口,会导致图无法更新显示的问题。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super__Tiger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值