Tensorflow1学习-4 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 = 50
#计算一共多少个批次
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]))
        variable_summaries(W)
    with tf.name_scope('biases'):
        B = tf.Variable(tf.zeros([10]))
        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('cost'):
    # 交叉熵代价函数
    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=prediction))
    tf.summary.scalar('cost', cost)
with tf.name_scope('train'):
    #使用梯度下降
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(cost)

#初始化变量
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))
    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('./logs/', sess.graph)
    for epoch in range(51):
        for batch in range(n_batch):
            batchx, batchy = mnist.train.next_batch(batch_size)
            summary,_ = sess.run([merged, train_step], feed_dict={x:batchx, y:batchy})

        writer.add_summary(summary, epoch)
        acc = sess.run(accuracy, feed_dict={x:mnist.test.images, y:mnist.test.labels})
        print('Iter' + str(epoch) + ', Testing Accuracy' + str(acc))

通过 tf.summary.scalar() 函数可以将网络的参数命名并记录下来,便于通过tensorboard进行可视化,代码中将cost,Weights和Bias全都记录下来了,最后通过 tf.summary.merge_all() 函数将所有的记录下来的参数进行整合。
最后,通过Tensorflow1学习-3 tensorboard使用
链接中的tensorboard的使用方法,在浏览器中可视化网络的变化。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: TensorBoardTensorFlow 提供的一种可视化工具,用于可视化训练过程中的各种指标,如损失值、精度、模型图等。通过 TensorBoard,可以更直观地理解和观察模型的表现。在 TensorFlow 中使用 TensorBoard 需要记录一些信息,然后运行 TensorBoard 服务器以在 Web 界面上展示信息。 ### 回答2: Tensorboard是一个用于可视化和调试神经网络模型的工具。它是TensorFlow框架的一部分,提供了一个直观易用的界面,方便用户查看和分析模型训练过程中的各种信息。 首先,Tensorboard能够展示模型的计算图,将模型的结构以图的形式展示出来。这使得用户可以清晰地了解模型的网络结构,包括各个层的连接关系、输入输出等信息。对于复杂的模型来说,这对于理解和调整模型非常有帮助。 其次,Tensorboard还提供了监控模型训练过程中的指标,如损失函数、准确率等。用户可以实时查看这些指标的变化趋势,以便调整模型的超参数或优化训练策略。此外,Tensorboard还支持在不同模型训练的指标进行对比和分析,有助于用户选取最佳的模型。 此外,Tensorboard还可以可视化模型中各个变量的变化情况。用户可以查看模型中各个变量的分布,了解它们的取值范围和分布情况。这对于调试模型中的梯度消失、梯度爆炸等问题非常有帮助,能够帮助用户更好地调整网络结构和优化算法。 最后,Tensorboard还支持可视化模型中的嵌入向量和样本数据。用户可以在Tensorboard中将高维的嵌入向量映射为二维或三维空间,以便观察不同嵌入向量之间的关系。此外,用户还可以将训练集中的样本数据可视化,以便直观地了解模型在不同数据上的表现。 总之,Tensorboard是一个功能强大的可视化工具,为用户提供了丰富的功能来监控、分析和调试神经网络模型。通过使用Tensorboard,用户可以更方便地理解和优化模型,提高模型的性能。 ### 回答3: TensorBoard是一个用于可视化TensorFlow模型训练过程和结果的工具。它提供了一些有用的功能,帮助我们更好地理解和调试我们的模型。 首先,TensorBoard提供了一个直观的界面,展示了模型的整体结构,包括网络层、运算图和参数的信息。这使得我们能够更好地理解和分析模型的架构,帮助我们进行调试和改进。它可以帮助我们可视化模型中的每一层,查看输入和输出的形状、参数数量等,使得模型的结构更加清晰可见。 其次,通过TensorBoard,我们可以实时地监测模型的训练过程。我们可以追踪和比较不同训练迭代中的损失函数、准确率等指标的变化,以更好地了解模型的性能和收敛情况。同时,TensorBoard还支持可视化训练过程中的模型参数的变化,帮助我们观察梯度更新和参数优化的过程。 此外,TensorBoard还提供了可视化工具来可视化模型的图像数据、文本数据、音频数据等。我们可以将模型的输入数据和输出结果进行可视化,帮助我们进一步理解模型的工作原理和预测结果。 最后,TensorBoard还支持模型的嵌入可视化。我们可以将高维的嵌入向量投影到二维平面上,以便更好地观察和分析嵌入空间中不同类别的关系和差异。这对于理解模型的特征学习过程和聚类效果非常有帮助。 总之,通过TensorBoard可视化功能,我们可以更好地理解和优化模型的结构、训练过程和结果,帮助我们更高效地进行深度学习研究和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值