TensorFlow2 Python深度学习 - 使用TensorBoard可视化数据
锋哥原创的TensorFlow2 Python深度学习视频教程:
https://www.bilibili.com/video/BV1X5xVz6E4w/
课程介绍
本课程主要讲解基于TensorFlow2的Python深度学习知识,包括深度学习概述,TensorFlow2框架入门知识,以及卷积神经网络(CNN),循环神经网络(RNN),生成对抗网络(GAN),模型保存与加载等。
TensorFlow2 Python深度学习 - 使用TensorBoard可视化数据
TensorBoard是TensorFlow的可视化工具包,可以帮助开发者理解、调试和优化机器学习模型。下面详细介绍TensorBoard的使用方法,包含完整示例。
官方网站:
https://www.tensorflow.org/tensorboard?hl=zh-cn
1. TensorBoard核心功能
-
标量可视化 - 损失函数、准确率等指标
-
图表可视化 - 模型计算图
-
直方图 - 权重和偏置的分布
-
投影器 - 高维数据降维可视化
-
图像可视化 - 输入图像和生成图像
-
文本可视化 - 文本数据
-
超参数调优 - 超参数对模型性能的影响
2.示例
我们把前面一个分类问题示例拿过来,把训练历史数据可视化下。
TensorBoard使用也比较简单,先定义日志目录,再定义一个回调方法,model.fit()方法里,参数callbacks指定回调即可。
import datetime
import tensorflow as tf
from keras import Input, layers
from sklearn.datasets import load_iris
# 1,加载鸢尾花数据集
iris = load_iris()
X = iris.data # 特征 花萼长度、花萼宽度、花瓣长度、花瓣宽度
y = iris.target # 标签 0-Setosa, 1-Versicolour, 2-Virginica
# 2,构建分类模型
model = tf.keras.Sequential([Input(shape=(X.shape[1],)),layers.Dense(16, activation='relu'), # 隐藏层layers.Dense(3, activation='softmax') # 输出层 3个神经元,对应3个类别
])
# 创建TensorBoard回调
log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir)
# 3,编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy', # 多分类交叉熵损失函数metrics=['accuracy'] # 评估指标:准确率)
# 4,训练模型
history = model.fit(X, y, epochs=200, batch_size=32, verbose=1, callbacks=[tensorboard_callback])
print(f"最终损失: {history.history['loss'][-1]:.4f}, 最终准确率: {history.history['accuracy'][-1]:.4f}")
运行完后,会生成日志文件。
打开终端,输入命令:
tensorboard --logdir=logs/fit
启动tensorboard
浏览器输入:
http://localhost:6006/
我们可以看到时间序列,标量等信息可视化图。方便我们观察和优化模型。
3.主要面板说明
-
Scalars(标量面板)
-
显示训练和验证的损失、准确率等指标
-
可以比较不同运行的指标
-
支持平滑曲线显示
-
Graphs(计算图面板)
-
显示模型的计算图
-
查看操作之间的依赖关系
-
分析模型结构
-
Distributions(分布面板)
-
显示权重和偏置的分布变化
-
监控梯度消失或爆炸问题
-
Histograms(直方图面板)
-
显示权重和偏置的直方图
-
跟踪参数分布随时间的变化
-
Projector(投影器面板)
-
高维数据的降维可视化
-
支持PCA、t-SNE等方法