你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

经验分享 | LAT1422 STM32 AFCI 方案 TensorBoard 的使用介绍

[复制链接]
攻城狮Melo 发布时间:2026-3-26 15:31

LAT1422 STM32 AFCI 方案 TensorBoard 的使用介绍

关键字:AFCI,AI,Tensorflow,TensorBoard

点击下载原文>>

1. 引言

STM32 AFCI 方案 AI 模型中涉及了很多神经网络参数,客户使用自有数据进行训练优化时,需要调整某些参数以及度量模型的性能。方案中使用了 mlflow 工具对此进行可视化管理,对于熟悉 Tensorflow 的客户,可能希望使用 TensorBoard 工具。TensorBoard 属于 Tensorflow 组件,是用于机器学习工作流所需测量和呈现的工具。通过在训练时将监控数据写入文件系统,利用 GUI 进行分析,或利用 Web 服务监控对应的文件目录,进而具备远程查看监控评估数据的能力。本文主要关注 TensorBoard 可视化的模型调试、优化方面的功能,以抛砖引玉,供客户入门参考。

2. TensorBoard

TensorBoard 是一组用于数据可视化的 GUI 工具,包含在开源机器学习库 Tensorflow 中。TensorBoard 的主要功能如下:

  • 跟踪和可视化损失及准确率等指标
  • 可视化模型图 (操作和层)
  • 查看权重、偏差或其他张量随时间变化的直方图
  • 显示图片、文字和音频数据
  • 剖析 Tensorflow 程序

TensorBoard 虽是 Tensorflow 的一部分,也可以独立安装,并可用于 Pytorch 等其他的框架。其安装命令如下:

pip install tensorboard

TensorBoard 可以在模型端使用,也可以与 Web 服务及浏览器相互配合,下面将逐步介绍其功能及用法。

2.1. 通过 fit 使用 TensorBoard Callback

STM32 AFCI 模型使用了 Tensorflow Keras's Model.fit 方法进行训练,可以直接添加 “tf.keras.callback.TensorBoard” 回调函数,用于创建和存储日志。TensorBoard 回调函数的原型如下:

plaintext

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 完成后进行度量数据的记录;其它参数按字面意思理解即可,我们这里使用了默认值。注意日志可以放在带有时间戳的子目录中 (已注释),以便更好进行对比训练,例子中以 SettingX 进行标识,代码如下:

plaintext

#我们这里没有打上时间戳,有需要客户可以考虑
#log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
#Setting01: default setting + Metrics added precision, recall, F1score
# Momentum=0.9, Nesterov=True, BatchSize=256, Epochs=200
# Earlystopping, patience=10
# Learning_rate=0.02, Reduce_lr, factor=0.75, patience=12
# Metrics = ['Accuracy', 'Precision', 'Recall', 'FalsePositives', 'FalseNegatives']
#Setting02: Learning_rate = 0.1
# Momentum=0.9, Nesterov=True, BatchSize=256, Epochs=200
# Earlystopping, patience=10
# Learning_rate=0.1, Reduce_lr, factor=0.75, patience=12
# Metrics=['Accuracy', 'Precision', 'Recall', 'FalsePositives', 'FalseNegatives']
#Setting03: batchsize = 128
# Momentum=0.9, Nesterov=True, BatchSize=256, Epochs=200
# Earlystopping, patience=10
# Learning_rate=0.02, Reduce_lr, factor=0.75, patience=12
# Metrics=['Accuracy', 'Precision', 'Recall', 'FalsePositives', 'FalseNegatives']
#Setting04: Earlystopping patience=15
# Momentum=0.9, Nesterov=True, BatchSize=256, Epochs=200
# Earlystopping, patience=15
# Learning_rate=0.02, Reduce_lr, factor=0.75, patience=12
# Metrics = ['Accuracy', 'Precision', 'Recall', 'FalsePositives', 'FalseNegatives']
from tensorflow.keras.callbacks import TensorBoard
#log_dir = "logs/fit/Setting01_default"
#log_dir = "logs/fit/Setting02_LR0.1"
#log_dir = "logs/fit/Setting03_BS128"
log_dir = "logs/fit/Setting04_ES5"
tensorboard_callback = TensorBoard(log_dir=log_dir, histogram_freq=1)

为了便于介绍,我们这里仅改变少量超参,作为 Setting01~Setting04 进行对照。然后将 tensorboard_callback 加入 fit 函数 callbacks 列表,即可开始模型脚本训练。

2.2. TensorBoard Scalars 在模调试中的作用

在机器学习过程中需要跟踪与模型性能相关的多个指标,这对于快速发现问题并确定模型是否过度拟合非常重要。使用 TensorBoard Scalars 可以可视化这些指标及更轻松地调试模型。

我们可以通过命令行或在 Jupyter Notebooks 中加载 TensorBoard。在 Notebooks 使用 % tensorboard 命令,在命令行中, 运行不带 “%” 的相同命令。

plaintext

# Load the TensorBoard extension
%load_ext tensorboard
%tensorboard --logdir logs/fit

调用 fit 进行模型训练,在产生监控数据记录后,启动 TensorBoard Scalars 的界面(刷新则需要点击界面右上角,或设置自动刷新)。 image.png

模型指标中,除了度量 Accuracy, Loss 外,我们在例子中还添加了 Precision, Recall,False_Negatives 以及 False_Positives 来丰富指标的测量与比较。较多 AFCI 客户关注 AI 检测的精确度 Precision, 但也可能会关心漏报率 (可用 1-Recall 衡量)。相关指标含义说明: image.png

  • 样本全集: TP+FP+FN+TN
  • TP: 样本为正,预测结果为正 (预测正确)
  • FP: 样本为负,预测结果为正 (预测错误)
  • TN: 样本为负,预测结果为负 (预测正确)
  • FN: 样本为正,预测结果为负 (预测错误)
  • 准确率 (Accuracy):(TP+TN)/ (TP+TN+FP+FN)
  • 精准率 (Precision):TP/(TP+FP),正确预测为正占全部预测为正的比例
  • 召回率 (Recall):TP/(TP+FN),正确预测为正占全部正样本的比例,对于 AFCI 预测,(1-recall) 可以理解为漏报率。

False_Negatives, False_Positives 为预测错误的样本数,与精准率和 Recall 高度相关,我们也将其加入到了度量列表,以便观察。

TensorBoard Scalars 可以轻松对比在不同超参下这些指标的变化情况,可对训练集、验证集上的指标进行交叉比较以实现模型调优。

image.png

image.pngimage.png

image.png

上面我们介绍了在模型端,用 fit 方法调用 TensorBoard Callback 记录监控数据,并使用 TensorBoard Scalars 进行指标对比。还可以使用其他方法进行监控数据的记录,例如当脚本中使用 tf.GradientTape () 进行自定义训练循环时,可以使用 Tensorflow summary 模块,创建写入数据的监控对象类实例,并在需要时通过该实例记录监控数据。这里可以通过 tf.summary. create_file_writer 创建监控对象类实例,指定监控数据的写入目录的代码如下:

plaintext

# 创建监控类,监控数据将写入log_dir 目录
summary_writer = tf.summary.create_file_writer(log_dir)

在相关训练脚本适当位置记录监控数据,代码如下:

plaintext

with summary_writer.as_default(): # 写入环境
# 当前时间戳step 上的数据为loss,写入到名为train-loss 数据库中
tf.summary.scalar('train-loss', float(loss), step=step)

有了监控数据后,就可以使用 TensorBoard Scalars 进行指标分析了。有需要的客户可以自行查阅 Tensorflow 官方 summary 模块的说明和用法,这里就不再赘述。

2.3. TensorBoard 分布图和直方图

TensorBoard 分布图和直方图是跟踪模型数据的一种好方法。使用官方提供的 fit 回调方法,在训练后 TensorBoard 上会多出几个选项。 image.png

转到 Distributions 分布选项卡,可查看由模型张量构成的图表,图中水平轴显示 Epoch 数,垂直轴显示每个张量的值,能看到张量随训练的变化情况,较暗的区域表示值在该区域停留较长时间 (未更新),可通过该图表排查模型权重未正确更新的问题。

在 Histograms 直方图选项卡上,会以直方图形式显示模型的张量,直方图和分布图的数据来源相同,仅展示视角和方式不同。Histograms 每个图有多个相互堆叠的直方图,代表训练的每个 Epoch,可立体展示权重和偏置的分布,通过观察模型张量数据便于发现异常,增强模型调试能力。 image.png

2.4. TensorBoard 浏览器端的使用

模型训练过程中已经将监控数据写入到了指定的日志目录中。如果需要实时远程查看 (比如模型需要连续训练多日时),可以借助于浏览器和 Web 服务。首先启动 TensorBoard Web 服务,可以通过在 cmd 终端运行tensorboard --logdir path 指定 Web 服务监控的文件目录 path,开启 Web 服务监控进程。 image.png

此时打开浏览器,输入网址http://localhost:6006 (也可以通过 IP 地址远程访问,具体端口号可能会变动,以命令行提示为准) 即可远程监控模型训练进度。 image.png

3. 小结

本文结合 AFCI 方案简单介绍了 Tensorflow 框架下 TensorBoard 工具,TensorBoard 是用于机器学习工作流所需测量和呈现的一款优秀的数据可视化工具,在文中我们主要介绍了 TensorBoard Scalars, Distributions, Histograms 在模型调试、优化方面的功能,以几个简单的超参数的变化比较了模型指标。在实际操作中,可以调整的参数很多,如 AFCI 采集数据的帧长、采样率,Layers 等,可以通过调整一个或多个参数,然后对一个或多个 (Accuracy,Precision,Recall 等) 模型指标进行对比分析,工具的使用可以有效缩短模型的开发周期。另外 TensorBoard 还具备定制化 Scalars,Images,Audios, Text,Deugger 等诸多功能,也可以与其它组件配合,如与 Tensorflow Profiler 来分析 Tensorflow 代码的执行情况等。感兴趣的客户可以进一步发掘。

收藏 评论0 发布时间:2026-3-26 15:31

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版