深度学习日志及可视化过程
一、什么是 TensorBoard?
TensorBoard 是一组用于数据可视化的工具。它包含在流行的开源机器学习库 Tensorflow 中。TensorBoard 的主要功能包括:
可视化模型的网络架构
跟踪模型指标,如损失和准确性等
检查机器学习工作流程中权重、偏差和其他组件的直方图
显示非表格数据,包括图像、文本和音频
将高维嵌入投影到低维空
二、什么是 wandb?(需要用到外网,也有offline离线模式)
wandb的核心功能就是跟踪训练过程,展示训练流程以供我们观察展示和分析
三、总结wandb和tensorboard
1. 核心功能对比
特性 | WandB | TensorBoard |
---|---|---|
开发方 | Weights & Biases 公司 | Google (TensorFlow 生态) |
主要用途 | 实验跟踪、协作、模型管理 | 训练过程可视化(TensorFlow 优先) |
实时更新 | ✅ 支持 | ❌ 需手动刷新 |
协作功能 | ✅ 多用户共享、评论、报告生成 | ❌ 仅本地或自行搭建服务共享 |
数据存储 | ☁️ 云端(可离线导出) | 💻 本地文件(需自行管理) |
框架支持 | PyTorch、TF、JAX 等(框架无关) | TensorFlow(原生)、PyTorch(插件) |
超参数记录 | ✅ 自动记录 | ✅ 需手动配置 |
模型版本控制 | ✅ 集成(可保存模型快照) | ❌ 需结合 Git 或其他工具 |
2. 使用场景推荐
选择 WandB 如果:
需要团队协作或远程查看实验结果。
希望自动记录超参数、代码版本、系统指标(如GPU温度)。
需生成精美的共享报告(如论文复现、项目交付)。
选择 TensorBoard 如果:
纯本地开发,无需云端功能。
深度依赖 TensorFlow 生态(如 TF Serving 集成)。
对隐私要求极高(数据完全离线)。
3. 代码示例对比
WandB 基础用法
import wandb# 初始化项目
wandb.init(project="my-project", config={"lr": 0.01})# 记录指标
for epoch in range(100):loss = train_step()wandb.log({"loss": loss}) # 自动同步到云端# 保存模型
wandb.save("model.h5")
TensorBoard 基础用法
from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter("logs/") # 本地存储for epoch in range(100):loss = train_step()writer.add_scalar("loss", loss, epoch) # 写入本地文件writer.close()
# 启动服务:tensorboard --logdir=logs/
4. 优缺点总结
工具 | 优点 | 缺点 |
---|---|---|
WandB | - 开箱即用的协作功能 - 丰富的仪表盘和报告 - 自动环境捕获 | - 免费版有限制(团队人数、存储) - 需联网(可离线模式) |
TensorBoard | - 完全免费和离线 - 与 TensorFlow 深度集成 - 可扩展性强 | - 协作功能弱 - 界面较老旧 |
5. 如何选择?
科研/团队项目 → WandB(提升协作效率)。
工业部署/TensorFlow 项目 → TensorBoard(稳定性优先)。
轻量级实验 → TensorBoard(避免依赖)。