tensorflow 可视化(tensorboard显示)——histogram,scalar

scalar是用来显示accuracy,cross entropy,dropout等标量变化趋势的函数。 通过scalar可以看到这些量随着训练加深的一个逐步变化的过程,进而可以看出我们模型的优劣。
注意:
1)scalar只能用于单个标量的显示,不能显示张量;
2)scalar可以显示多次训练的结果

变量

变量则可使用Tensorflow.histogram_summary()方法:

tf.histogram_summary(layer_name+"/weights",Weights) #name命名,Weights赋值

tf.histogram_summary(layer_name+"/weights",Weights) #name命名,Weights赋值

标量

1.在tensorflow构建图的过程中放入记录变量

在使用tensorflow构建图的过程中,在需要记录变量值的地方放入summary operations。
使用tf.summary.scalar记录标量
使用tf.summary.histogram记录数据的直方图
使用tf.summary.distribution记录数据的分布图
使用tf.summary.image记录图像数据
————————————————
在要显示的标量下添加代码:

tf.summary.scalar('loss', loss)  # 记录优化器的变化

在这里插入图片描述
注意:使用相同的配置多次训练,然后相同的数据在同一个图上显示的结果,进入该log所在的文件夹,删除历史记录,仅仅保留最新的结果,就会出现一个比较干净的图。

2.合并summary operation

变量tensorflow变量初始化之前合并采集点变量,并且将它们写到之前定义的log_dir路径。

 summaries合并
merged = tf.summary.merge_all()
# 写到指定的磁盘路径中
train_writer = tf.summary.FileWriter(log_dir + '/train', Session.graph) ##该句也可写在变量初始化后,或者训练流程后面
tf.global_variables_initializer().run()

注意这里的train_writer变量,这里是定义一个信息的存储位置,后面在训练过程中采集到的数据都要通过这个变量写入文件。

3.在网络训练的过程中采集数据

下面就是在网络的训练过程中将该记录的数据记录下来

#训练1k次  
for i in range(1000):  
  sess.run(train_step,feed_dict={
    
    xs:x_data,ys:y_data})  
  if i%50==0:  
    result = sess.run(merged,feed_dict={
    
    xs:x_data,ys:y_data}) #merged也是需要run的  
    train_writer.add_summary(result,i) #result是summary类型的,需要放入writer中,i步数(x轴) 

或者

for i in range(1000):
        batch = mnist.train.next_batch(50)
        summary,_ = session.run([merged,train], feed_dict = {
    
    x:batch[0], y:batch[1], keep_prob:0.5})
        train_writer.add_summary(summary,i)
        if i % 100 == 0:
            print("step %4d: " % i)
            print(session.run(accuracy, feed_dict = {
    
    x:batch[0], y:batch[1], keep_prob:1}))
    print(session.run(accuracy, feed_dict = {
    
    x:mnist.test.images, y:mnist.test.labels, keep_prob:1}))
    train_writer.close()

4.打开tensorboard

进入tensorflow的虚拟环境

tensorboard --logdir="自己存的地址"

复制出现的网址,在网页中打开即可

显示多次训练的结果

要显示多次训练的结果,就要在每次训练的过程中给FileWriter设置不同的目录。比如第一次训练设置如下:

train_writer = tf.summary.FileWriter(log_dir + '/train', self.sess.graph)

那么第二次训练就可以设置为:

train_writer = tf.summary.FileWriter(log_dir + '/train_1', self.sess.graph)

这样当按照常规步骤打开tensorboard时,在面板的左侧就会显示不同的训练结果文件,如果要打开,则勾选相应的文件即可。
在这里插入图片描述
当勾选多个时,在图中就会以不同的颜色显示不同的图像。应该可以实现不同模型但是训练结果在一个图中的情况,只需存储路径和train_writer相同)

猜你喜欢

转载自blog.csdn.net/zangba9624/article/details/103528742