tensoflow 参数可视化(权重,训练loss)之tensorboard(1)

1.tensoflow 参数可视化

有时候需要查看网络模型结构、训练过程中的loss变化、以及权重变化,张量(tensor)分布,需要通过tensorboard来查看。TensorBoard是一个可视化工具,有助于我们调试,选择数据。训练过程中各种数据的汇总都可以通过tensorbaord表现。tensorboard还可以展示每个节点运行时消耗的时间、空间、运行的机器(GPU或者CPU)等信息。还可以将程序运行过程中不同迭代轮数中tensorflow各节点消耗的时间和空间等信息写入日志文件中,用tensorboard展示。

1.1tensorboard基础

1.1.1tensorboard可表示的量

(1)标量(scale):

是用来显示accuracy,cross entropy,dropout等标量变化趋势的函数

(2)图片(image)

(3)音频(Audi)

(4)计算图(Graphs)

(5)数据分布(Distribution)

(6)直方图(Histogram):展示训练过程中记录的数据的分布图

(7)嵌入向量(Emdebings)

1.1.2tensorbosrd常用函数

tf.image_summary   用于保存图
tf.scalar_summary   用于保存标量
tf.histogram_summary  用于保存直方图
tf.merge_summary     用于汇总所有的量
tf.train.SummaryWriter  用于创建写操作

1.2搭建tensorboard流程

(1)定义一个计算图 ,添加需要记录节点

如果为了查看网络参数,loss,accuracy等变量,需要使用命域tf.namescope(),给每个参数,操作op命名。

然后使用tf.summary.scalar/image/histogram()添加需要记录的节点(需要根据变量性质使用函数,标量使用tf.summary.scalar)。

(2)创建writer,配置log保存路径

writer=tf.summary.FileWriter('/path/to/logs', sess.graph)

(3)对记录的节点进行汇总

使用tf.summary.merge_all()直接汇总所用的参数。

merged = tf.summary.merge_all()

(4)运行汇总节点

通过Session运行汇总节点,summary = sess.run(merged),根据自己需求设置保存频率,比如一个epoch保存一次。  

(5)将汇总写入日志文件

writer.add_summary(summary, global_step=i),i表示迭代步数,可以自己设置

writer.close()

运行完会生成events.out.tfevents.前缀的文件。

(6)启动TensorBoard服务

通过cmd启动

tensorboard --logdir=/log_path/

当系统报错,找不到tensorboard命令时,则需要使用绝对路径调用tensorboard,

python tensorflow/tensorboard/tensorboard.py --logdir=/log_path/ 

生成

启动成功的图

(7)并在浏览器中输出localhost:6006打开tensorboard查看:

1.3 简单示意程序(计算图结构)

import tensorflow as tf
#定义命名空间
with tf.name_scope('input'):
  input1 = tf.constant(1,name='a')#定义变量名
  input2 = tf.constant(2,name='b')
with tf.name_scope('add_op'):
  add = tf.add(input2,input3)
with tf.Session() as sess:
  wirter = tf.summary.FileWriter('logs/',ss.graph)#默认在当前目录下的logs文件夹,可以自己设置
  result = sess.run()
  writer.close()

计算图结构如下

图结构中常见符号如下

2. tensorflow 通过tensorflow显示 loss和accury

(1)定义loss和accuracy的作用域
(2)将变量保存在一起
(3)创建写操作,配置保存路径,需要在session中操作
(4)在模型训练时候运行变量集合merged,在sess中完成
(5)查看loss

2.1实例程序1

#1.定义loss和accuracy的作用域
with tf.name_scope('loss'):
  loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(y_holder, predict_y))
  loss_summary = scalar_summary('loss', loss)#保存标量loss
 
with tf.name_scope('accuracy'):
  accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))
  acc_summary = scalar_summary('accuracy', accuracy)保存标量loss

#2.将变量保存在一起
merged = merge_summary([loss_summary, acc_summary])
#3.创建写操作,配置保存路径,需要在session中操作
writer = SummaryWriter('/path/logs', sess.graph)
#4在模型训练时候运行变量集合merged,在sess中完成
for step in range(total_step):
	summary, _ = sess.run([merged, train], feed_dict={x:x_batch, y:y_batch})
	writer.add_summary(summary, step)
writer.close()

2.1实例程序2


import tensorflow as tf
# 导入数据
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("./data/", one_hot=True)

# 设置相关参数
learning_rate = 0.01
training_epochs = 50
batch_size = 128
display_epoch = 1
logs_path = './log' # log存放位置


#输入数据: mnist data image of shape 28*28=784
#(name=''将在Tensorboard中显示)
x = tf.placeholder(tf.float32, [None, 784], name='InputData') #输入图像数据
y = tf.placeholder(tf.float32, [None, 10], name='LabelData') # 输出标签

#构建计算图(模型+损失函数+优化方法)
W = tf.Variable(tf.zeros([784, 10]), name='Weights') #权重
b = tf.Variable(tf.zeros([10]), name='Bias') #偏置
#对需要在tensorboard中显示的tensor,标量,op设置命令域
with tf.name_scope('Model'):
    pred = tf.nn.softmax(tf.matmul(x, W) + b) # Softmax
with tf.name_scope('Loss'):#损失函数
    cost = tf.reduce_mean(-tf.reduce_sum(y * tf.log(pred), reduction_indices=1))
with tf.name_scope('SGD'):#优化策略
    optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
with tf.name_scope('Accuracy'):
    acc = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))
    acc = tf.reduce_mean(tf.cast(acc, tf.float32))

# 初始化全局变量
init = tf.global_variables_initializer()
#把标量loss和acc通过summary加入监测
tf.summary.scalar("loss", cost)
tf.summary.scalar("accuracy", acc)
#把所有的 summaries汇入merge节点
merged_summary_op = tf.summary.merge_all()

# 开始训练
with tf.Session() as sess:
    sess.run(init)

    #初始化写操作
    summary_writer = tf.summary.FileWriter(logs_path, graph=sess.graph))
    for epoch in range(training_epoch):
        avg_cost = 0.
        total_iteration = int(mnist.train.num_examples / batch_size)
        # Loop over all batches
        for i in range(total_iteration):
            batch_xs, batch_ys = mnist.train.next_batch(batch_size)
            # Run optimization op (backprop), cost op (to get loss value)
            # and summary nodes
            _, c, summary = sess.run([optimizer, cost, merged_summary_op],
                                     feed_dict={x: batch_xs, y: batch_ys})
            # Write logs at every iteration
            summary_writer.add_summary(summary, epoch * total_batch + i)
            # Compute average loss
            avg_cost += c / total_iteration
        # Display logs per epoch step
        if (epoch+1) % display_epoch == 0:
            print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(avg_cost))#打印loss

 

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TensorBoard是一个可视化工具,可以帮助我们更好地理解和调试深度学习模型。其中一个功能是可视化训练过程中的损失函数loss),可以帮助我们更好地了解模型的训练情况和性能表现。通过TensorBoard,我们可以实时监控训练过程中的loss变化,以及不同超参数对模型性能的影响,从而更好地优化模型。 ### 回答2: TensorboardTensorFlow可视化工具,它提供了各种可视化功能来帮助我们分析和调试模型。其中,可视化训练lossTensorboard的一项重要功能。 可视化训练loss可以通过Tensorboard的scalar面板来实现。在训练过程中,我们可以将每次迭代的loss值记录下来,并使用Tensorboard将它们可视化出来。通过观察这些loss值的变化趋势,我们可以更好地了解模型的训练过程,并判断模型的性能是否达到了预期。 在Tensorboard中,我们可以通过以下几个步骤来可视化训练loss: 1.在TensorFlow代码中定义一个tf.summary.scalar节点,用来记录loss值。 2.将这个节点添加到tf.summary.merge_all操作中,以便将所有的summary数据合并到一个文件中。 3.在训练的主循环中,每个epoch或每个batch结束时,调用tf.summary.FileWriter将summary数据写入到磁盘中。 4.启动Tensorboard,使用命令行或浏览器访问可视化界面。 在Tensorboard的scalar面板中,我们可以看到loss值的变化趋势,并可以通过鼠标滚轮、缩放和平移来更好地观察数据。此外,Tensorboard还提供了一些交互式功能,如标记数据点、查看详细信息等,帮助我们更深入地理解模型的训练过程可视化训练loss是一个非常重要的工具,它可以帮助我们快速了解模型的训练情况,并帮助我们调试和改进模型。Tensorboard作为TensorFlow可视化工具,为我们提供了非常方便的实现方式,值得我们深入学习和使用。 ### 回答3: Tensorboard是谷歌TensorFlow的一种可视化工具,它可以帮助我们更直观地展示模型训练过程。其中一个非常实用的功能就是可视化训练loss训练loss是指模型在训练过程中,根据当前参数计算得出的损失值。损失(loss)是机器学习模型优化的核心指标之一,它代表着模型在训练过程中的误差大小,而误差越小,模型的效果就越好。 Tensorboard可视化训练loss的功能可以帮助我们更加清晰地了解模型在训练过程中的表现。通过Tensorboard,我们可以将训练过程中的loss值以表的形式展示出来,包括训练集和验证集的loss,让我们更加直观地了解模型的表现。 在Tensorboard中,训练loss可视化展示包括两个部分,一个是scalar值的展示,一个是graph的展示。scalar值的展示可以展示训练集和验证集的loss值随着训练epoch的增加而变化的趋势。我们可以通过 scalar 按照 tag 进行检索,方便我们查看不同 tag 的 loss 值。而 graph 的展示可以直观地展示模型的结构,包括输入、输出以及各个操作的关系,在模型调试的时候非常有用。 通过可视化训练loss,我们可以及时发现模型在训练过程中的问题,比如是否出现了过拟合或欠拟合等情况,并针对性地调整参数,提高模型的准确率。因此,可视化训练loss是机器学习模型优化过程中非常重要的一环,Tensorboard的这个功能让我们在训练中发现问题更加直观方便,帮助我们更快地提高模型的性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值