LAT1422 STM32 AFCI 方案 TensorBoard 的使用介绍关键字:AFCI,AI,Tensorflow,TensorBoard 点击下载原文>>1. 引言STM32 AFCI 方案 AI 模型中涉及了很多神经网络参数,客户使用自有数据进行训练优化时,需要调整某些参数以及度量模型的性能。方案中使用了 mlflow 工具对此进行可视化管理,对于熟悉 Tensorflow 的客户,可能希望使用 TensorBoard 工具。TensorBoard 属于 Tensorflow 组件,是用于机器学习工作流所需测量和呈现的工具。通过在训练时将监控数据写入文件系统,利用 GUI 进行分析,或利用 Web 服务监控对应的文件目录,进而具备远程查看监控评估数据的能力。本文主要关注 TensorBoard 可视化的模型调试、优化方面的功能,以抛砖引玉,供客户入门参考。 2. TensorBoardTensorBoard 是一组用于数据可视化的 GUI 工具,包含在开源机器学习库 Tensorflow 中。TensorBoard 的主要功能如下:
TensorBoard 虽是 Tensorflow 的一部分,也可以独立安装,并可用于 Pytorch 等其他的框架。其安装命令如下:
TensorBoard 可以在模型端使用,也可以与 Web 服务及浏览器相互配合,下面将逐步介绍其功能及用法。 2.1. 通过 fit 使用 TensorBoard CallbackSTM32 AFCI 模型使用了 Tensorflow Keras's Model.fit 方法进行训练,可以直接添加 “tf.keras.callback.TensorBoard” 回调函数,用于创建和存储日志。TensorBoard 回调函数的原型如下: plaintext
我们以下面例子进行说明,下面代码中 “histogram_freq=1” 使能了直方图计算功能 (默认情况下是关闭状态);另外 update_freq 采用了默认值 'epoch',该参数可以采用 'batch',即每个 batch 完成后进行度量数据的记录,也可以直接使用数值,如 100,则表示每 100 个 batch 完成后进行度量数据的记录;其它参数按字面意思理解即可,我们这里使用了默认值。注意日志可以放在带有时间戳的子目录中 (已注释),以便更好进行对比训练,例子中以 SettingX 进行标识,代码如下: plaintext
为了便于介绍,我们这里仅改变少量超参,作为 Setting01~Setting04 进行对照。然后将 tensorboard_callback 加入 fit 函数 callbacks 列表,即可开始模型脚本训练。 2.2. TensorBoard Scalars 在模调试中的作用在机器学习过程中需要跟踪与模型性能相关的多个指标,这对于快速发现问题并确定模型是否过度拟合非常重要。使用 TensorBoard Scalars 可以可视化这些指标及更轻松地调试模型。 我们可以通过命令行或在 Jupyter Notebooks 中加载 TensorBoard。在 Notebooks 使用 % tensorboard 命令,在命令行中, 运行不带 “%” 的相同命令。 plaintext
调用 fit 进行模型训练,在产生监控数据记录后,启动 TensorBoard Scalars 的界面(刷新则需要点击界面右上角,或设置自动刷新)。
模型指标中,除了度量 Accuracy, Loss 外,我们在例子中还添加了 Precision, Recall,False_Negatives 以及 False_Positives 来丰富指标的测量与比较。较多 AFCI 客户关注 AI 检测的精确度 Precision, 但也可能会关心漏报率 (可用 1-Recall 衡量)。相关指标含义说明:
False_Negatives, False_Positives 为预测错误的样本数,与精准率和 Recall 高度相关,我们也将其加入到了度量列表,以便观察。 TensorBoard Scalars 可以轻松对比在不同超参下这些指标的变化情况,可对训练集、验证集上的指标进行交叉比较以实现模型调优。
上面我们介绍了在模型端,用 fit 方法调用 TensorBoard Callback 记录监控数据,并使用 TensorBoard Scalars 进行指标对比。还可以使用其他方法进行监控数据的记录,例如当脚本中使用 tf.GradientTape () 进行自定义训练循环时,可以使用 Tensorflow summary 模块,创建写入数据的监控对象类实例,并在需要时通过该实例记录监控数据。这里可以通过 tf.summary. create_file_writer 创建监控对象类实例,指定监控数据的写入目录的代码如下: plaintext
在相关训练脚本适当位置记录监控数据,代码如下: plaintext
有了监控数据后,就可以使用 TensorBoard Scalars 进行指标分析了。有需要的客户可以自行查阅 Tensorflow 官方 summary 模块的说明和用法,这里就不再赘述。 2.3. TensorBoard 分布图和直方图TensorBoard 分布图和直方图是跟踪模型数据的一种好方法。使用官方提供的 fit 回调方法,在训练后 TensorBoard 上会多出几个选项。
转到 Distributions 分布选项卡,可查看由模型张量构成的图表,图中水平轴显示 Epoch 数,垂直轴显示每个张量的值,能看到张量随训练的变化情况,较暗的区域表示值在该区域停留较长时间 (未更新),可通过该图表排查模型权重未正确更新的问题。 在 Histograms 直方图选项卡上,会以直方图形式显示模型的张量,直方图和分布图的数据来源相同,仅展示视角和方式不同。Histograms 每个图有多个相互堆叠的直方图,代表训练的每个 Epoch,可立体展示权重和偏置的分布,通过观察模型张量数据便于发现异常,增强模型调试能力。
2.4. TensorBoard 浏览器端的使用模型训练过程中已经将监控数据写入到了指定的日志目录中。如果需要实时远程查看 (比如模型需要连续训练多日时),可以借助于浏览器和 Web 服务。首先启动 TensorBoard Web 服务,可以通过在 cmd 终端运行 此时打开浏览器,输入网址http://localhost:6006 (也可以通过 IP 地址远程访问,具体端口号可能会变动,以命令行提示为准) 即可远程监控模型训练进度。
3. 小结本文结合 AFCI 方案简单介绍了 Tensorflow 框架下 TensorBoard 工具,TensorBoard 是用于机器学习工作流所需测量和呈现的一款优秀的数据可视化工具,在文中我们主要介绍了 TensorBoard Scalars, Distributions, Histograms 在模型调试、优化方面的功能,以几个简单的超参数的变化比较了模型指标。在实际操作中,可以调整的参数很多,如 AFCI 采集数据的帧长、采样率,Layers 等,可以通过调整一个或多个参数,然后对一个或多个 (Accuracy,Precision,Recall 等) 模型指标进行对比分析,工具的使用可以有效缩短模型的开发周期。另外 TensorBoard 还具备定制化 Scalars,Images,Audios, Text,Deugger 等诸多功能,也可以与其它组件配合,如与 Tensorflow Profiler 来分析 Tensorflow 代码的执行情况等。感兴趣的客户可以进一步发掘。 |
STM32 LAT实战经验资料汇总分享(260205)
我中奖啦,收到了STM32开发板,足足开心了一整天啊
STM32嵌入式常见面试知识点汇总
经验分享 | STM32 HRTIM实现复杂波形的配置演示
经验分享 | STM32G0 Stop模式下LPUART唤醒演示
经验分享 | STM32G4系列是否支持位带操作
经验分享 | 一段莫名的延时输出问题
经验分享 | 发不出去的hello问题
基于编码器信号的PWM输出示例
经验分享 | 基于STM32G4芯片TIM+SPI+DMA应用示例
微信公众号
手机版