Tensorflow基础教程10:常用模块 TensorBoard:训练过程可视化

23 篇文章 1 订阅
21 篇文章 0 订阅
本文介绍了如何利用TensorBoard实时查看模型训练过程中的参数变化,包括损失函数值和其他自定义变量。通过创建文件记录器,使用tf.summary.scalar记录训练信息,并启动TensorBoard服务查看可视化结果。此外,还展示了如何利用TensorBoard查看计算图结构和Profile信息,以及在一个多层感知机模型的训练示例中应用TensorBoard。
摘要由CSDN通过智能技术生成

在开始学习之前推荐大家可以多在  FlyAI竞赛服务平台 多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

目录

  实时查看参数变化情况

  查看 Graph 和 Profile 信息

  实例:查看多层感知机模型的训练情况

  有时,你希望查看模型训练过程中各个参数的变化情况(例如损失函数 loss 的值)。虽然可以通过命令行输出来查看,但有时显得不够直观。而 TensorBoard 就是一个能够帮助我们将训练过程可视化的工具。

  实时查看参数变化情况

  首先在代码目录下建立一个文件夹(如 ./tensorboard )存放 TensorBoard 的记录文件,并在代码中实例化一个记录器:

  summary_writer = tf.summary.create_file_writer('./tensorboard') # 参数为记录文件所保存的目录

  接下来,当需要记录训练过程中的参数时,通过 with 语句指定希望使用的记录器,并对需要记录的参数(一般是 scalar)运行 tf.summary.scalar(name, tensor, step=batch_index) ,即可将训练过程中参数在 step 时候的值记录下来。这里的 step 参数可根据自己的需要自行制定,一般可设置为当前训练过程中的 batch 序号。整体框架如下:

  summary_writer = tf.summary.create_file_writer('./tensorboard')

  # 开始模型训练

  for batch_index in range(num_batches):

  # ...(训练代码,当前batch的损失值放入变量loss中)

  with summary_writer.as_default(): # 希望使用的记录器

  tf.summary.scalar("loss", loss, step=batch_index)

  tf.summary.scalar("MyScalar", my_scalar, step=batch_index) # 还可以添加其他自定义的变量

  每运行一次 tf.summary.scalar() ,记录器就会向记录文件中写入一条记录。除了最简单的标量(scalar)以外,TensorBoard 还可以对其他类型的数据(如图像,音频等)进行可视化。

  当我们要对训练过程可视化时,在代码目录打开终端(如需要的话进入 TensorFlow 的 conda 环境),运行:

 tensorboard --logdir=./tensorboard

  然后使用浏览器访问命令行程序所输出的网址(一般是 http://name-of-your-computer:6006),即可访问 TensorBoard 的可视界面,

  默认情况下,TensorBoard 每 30 秒更新一次数据。不过也可以点击右上角的刷新按钮手动刷新。

  TensorBoard 的使用有以下注意事项:

  如果需要重新训练,需要删除掉记录文件夹内的信息并重启 TensorBoard(或者建立一个新的记录文件夹并开启 TensorBoard, --logdir 参数设置为新建立的文件夹);

  记录文件夹目录保持全英文。

  查看 Graph 和 Profile 信息

  除此以外,我们可以在训练时使用 tf.summary.trace_on 开启 Trace,此时 TensorFlow 会将训练时的大量信息(如计算图的结构,每个操作所耗费的时间等)记录下来。在训练完成后,使用 tf.summary.trace_export 将记录结果输出到文件。

  tf.summary.trace_on(graph=True, profiler=True) # 开启Trace,可以记录图结构和profile信息

  # 进行训练

  with summary_writer.as_default():

  tf.summary.trace_export(name="model_trace", step=0, profiler_outdir=log_dir) # 保存Trace信息到文件

  之后,我们就可以在 TensorBoard 中选择 “Profile”,以时间轴的方式查看各操作的耗时情况。如果使用了 tf.function 建立了计算图,也可以点击 “Graphs” 查看图结构。

  在 TensorFlow 2.3 及后续版本中,需要使用:

  pip install -U tensorboard-plugin-profile

  安装独立的 TensorBoard Profile 插件以使用 Profile 功能。

  实例:查看多层感知机模型的训练情况

  最后提供一个实例,以前章的 多层感知机模型 为例展示 TensorBoard 的使用:

  import tensorflow as tf大连做人流哪家好 http://mobile.dlrlyy.com/

  from zh.model.mnist.mlp import MLP

  from zh.model.utils import MNISTLoader

  num_batches = 1000

  batch_size = 50

  learning_rate = 0.001

  log_dir = 'tensorboard'

  model = MLP()

  data_loader = MNISTLoader()

  optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate)

  summary_writer = tf.summary.create_file_writer(log_dir) # 实例化记录器

  tf.summary.trace_on(profiler=True) # 开启Trace(可选)

  for batch_index in range(num_batches):

  X, y = data_loader.get_batch(batch_size)

  with tf.GradientTape() as tape:

  y_pred = model(X)

  loss = tf.keras.losses.sparse_categorical_crossentropy(y_true=y, y_pred=y_pred)

  loss = tf.reduce_mean(loss)

  print("batch %d: loss %f" % (batch_index, loss.numpy()))

  with summary_writer.as_default(): # 指定记录器

  tf.summary.scalar("loss", loss, step=batch_index) # 将当前损失函数的值写入记录器

  grads = tape.gradient(loss, model.variables)

  optimizer.apply_gradients(grads_and_vars=zip(grads, model.variables))

  with summary_writer.as_default():

  tf.summary.trace_export(name="model_trace", step=0, profiler_outdir=log_dir) # 保存Trace信息到文件(可选)

在这里插入图片描述


更多关于人工智能的文章,敬请访问:FlyAI-AI竞赛服务平台学习圈学习;同时FlyAI欢迎广大算法工程师在平台发文,获得更多原创奖励。此外,FlyAI竞赛平台提供大量数据型赛题供学习党和竞赛党参与,免费GPU试用,更多大赛经验分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值