ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TensorFlow2 入门指南 | 10 TensorBoard可视化(选学)

2021-06-09 23:30:37  阅读:424  来源: 互联网

标签:TensorFlow2 10 loss summary step 可视化 监听 dir 选学


前言:

本专栏在保证内容完整性的基础上,力求简洁,旨在让初学者能够更快地、高效地入门TensorFlow2 深度学习框架。如果觉得本专栏对您有帮助的话,可以给一个小小的三连,各位的支持将是我创作的最大动力!

系列文章汇总:TensorFlow2 入门指南
Github项目地址:https://github.com/Keyird/TensorFlow2-for-beginner


文章目录


一、安装TensorBoard

最新的TensorFLow是默认安装了tensorboard,如果你不确定,可以使用 pip list 命令,检查一下是否安装:

在这里插入图片描述
如果没有找到 tensorboard 的安装包,则需要重新安装:

pip install tensorboard

二、创建监听

(1)监听一个目录

首先你需要确定一个存放数据的文件夹,这个文件夹用来存储要监听的数据(比如loss、acc等)。网络在训练过程中,CPU会不断将要监听的数据存入该文件夹所在磁盘位置,然后Web端会实时监听该文件夹内的数据,通过渲染之后,在网页UI上显示出来,方面开发者实时查看网络训练的情况。具体逻辑图如下所示:

在这里插入图片描述
首先,在开始菜单找到并打开Anacodna Prompt,然后进入之前创建好的虚拟环境:

conda activate tf2.2.0

然后,进入存放监听数据的文件夹:D:\Learning\TensorFLow2\chap10

然后,监听该路径 D:\Learning\TensorFLow2\chap10 下的数据

完整过程如下图所示,最后会显示监听成功,并告诉你监听网页的网络端口,如图中绿色所示:
在这里插入图片描述
打开谷歌浏览器,输入你的网络端口,就可以查看历史监听数据:
在这里插入图片描述
注:如果是第一次使用tensorboard,它可能会提示你暂时没有数据。

(2)新建summary实例

首先,我们需要新建一个 summary 实例,可使用 tf.summary.create_file_writer(file_path) 来创建:

# 读取当前时间,作为存放数据的文件名
current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
# log_dir是最终监听的文件路径
log_dir = 'logs/' + current_time
# 创建writer
summary_writer = tf.summary.create_file_writer(log_dir)

(3)将数据存入summary实例

创建好 summary 实例后,我们将可以将要监听的数据存入该summary实例中。

1、比如,要将损失值loss按照每隔100轮的方式存入summary实例中,最后在网页端显示出来:

# 每隔100轮向log_dir文件中存入loss
if step % 100 == 0:
    print(step, 'loss:', float(loss))
    with summary_writer.as_default():
        tf.summary.scalar('train-loss', float(loss), step=step)

2、监听验证集训练精度

# 每隔500轮向log_dir文件中存入val-acc
if step % 500 == 0:
    with summary_writer.as_default():
        tf.summary.scalar('val-acc', float(total_correct / total), step=step)

3、监听训练集的单张图片

with summary_writer.as_default():
    tf.summary.image("Training sample:", sample_img, step=0)

4、监听验证集的一组图片,并合并一起显示

if step % 500 == 0:
    with summary_writer.as_default():
        val_images = tf.reshape(val_images, [-1, 28, 28])
        # 合并显示
        figure = image_grid(val_images)  
        tf.summary.image('val-images:', plot_to_image(figure), step=step)

三、可视化

待网络开始训练时,在网页端九可以实时查看监听的数据变化了,默认每隔30刷新一次。

(1)数据可视化

1、监听训练过程中的损失值loss;如下图所示:横轴为step,纵轴是训练损失值loss
在这里插入图片描述

2、监听验证集训练精度
在这里插入图片描述

(2)图像可视化

1、监听训练集单张图片
在这里插入图片描述

2、监听验证集多张图片,并合并显示
在这里插入图片描述

四、可视化网络结构图

(1)指定监听文件路径

# 获取当前时间
current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
# log_dir是最终监听的文件路径
log_dir = 'logs/' + current_time

(2)创建回调函数

tensorboard_callback = keras.callbacks.TensorBoard(log_dir=log_dir)

(3)在fit()中加入回调参数

history = network.fit(train_dataset, epochs=20, validation_data=val_dataset, validation_freq=1,
                      callbacks=[tensorboard_callback])

(4)在网页上查看Graph

打开浏览器,输入你的网络端口号,点击TensorBoard页面中的GRAPHS,就可以看到监听到的网络结构图。
在这里插入图片描述


Facebook 开发的 Visdom 工具同样可以方便可视化数据,并且支持的可视化方式更丰富,实时性更高,使用起来更加方便。Visdom 可以直接接受 PyTorch 的张量数据,但不能直接接受 TensorFlow 的张量类型,需要转换为 Numpy 数据。

参考资料:


本教程所有代码会逐渐上传github仓库:https://github.com/Keyird/TensorFlow2-for-beginner
如果对你有帮助的话,欢迎star收藏~

最好的关系是互相成就,各位的「三连」就是【AI 菌】创作的最大动力,我们下期见!

在这里插入图片描述

标签:TensorFlow2,10,loss,summary,step,可视化,监听,dir,选学
来源: https://blog.csdn.net/wjinjie/article/details/117674716

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有