1、引言
STM32 AFCI 方案 AI 模型中涉及了很多神经网络参数,客户使用自有数据进行训练优化时,需要调整某些参数以及度量模型的性能。方案中使用了 mlflow 工具对此进行可视化管理,对于熟悉 Tensorflow 的客户,可能希望使用 TensorBoard 工具。TensorBoard 属于Tensorflow 组件,是用于机器学习工作流所需测量和呈现的工具。通过在训练时将监控数据写入文件系统,利用 GUI 进行分析,或利用 Web 服务监控对应的文件目录,进而具备远程查看监控评估数据的能力。本文主要关注 TensorBoard 可视化的模型调试、优化方面的功能,以抛砖引玉,供客户入门参考。
2、TensorBoard
TensorBoard 是一组用于数据可视化的 GUI 工具,包含在开源机器学习库 Tensorflow中。TensorBoard 的主要功能如下:
- 跟踪和可视化损失及准确率等指标
- 可视化模型图(操作和层)
- 查看权重、偏差或其他张量随时间变化的直方图
- 显示图片、文字和音频数据
- 剖析 Tensorflow 程序
TensorBoard 虽是 Tensorflow 的一部分,也可以独立安装,并可用于 Pytorch 等其他的框架。其安装命令如下:
TensorBoard 可以在模型端使用,也可以与 Web 服务及浏览器相互配合,下面将逐步介绍其功能及用法。
2.1. 通过 fit 使用 TensorBoard Callback
STM32 AFCI 模型使用了 Tensorflow Keras's Model.fit 方法进行训练,可以直接添加“tf.keras.callback.TensorBoard”回调函数,用于创建和存储日志。TensorBoard 回调函
数的原型如下:
tf.keras.callbacks.TensorBoard(
log_dir='logs',
histogram_freq=0,
write_graph=True,
write_images=False,
write_steps_per_second=False,
update_freq='epoch',
profile_batch=0,
embeddings_freq=0,
embeddings_metadata=None,
**kwargs
)
我们以下面例子进行说明,下面代码中“histogram_freq=1”使能了直方图计算功能(默认情况下是关闭状态);另外 update_freq 采用了默认值'epoch',该参数可以采用'batch',即每个 batch 完成后进行度量数据的记录,也可以直接使用数值,如 100,则表示每 100 个 batch 完成后进行度量数据的记录;其它参数按字面意思理解即可,我们这里使用了默认值。
584