wandb (Weights & Biases) 入门教程

Weights & Biases (简称 wandb) 是一个强大的实验跟踪工具,广泛用于机器学习和深度学习项目中。它可以帮助你跟踪实验指标、可视化结果、比较不同模型性能,并与团队成员轻松共享你的工作。
什么是 wandb?
wandb 提供了一套工具,帮助开发者管理机器学习实验,包括:
实验指标跟踪(损失、准确率等)
超参数记录与比较
模型权重保存与版本控制
实验结果可视化与分享
团队协作功能
安装 wandb
首先,你需要安装 wandb 库:

pip install wandb

基本使用流程

  1. 初始化与登录
    第一次使用时,需要登录你的 wandb 账号:
import wandb

# 登录(第一次运行会提示你在浏览器中授权)
wandb.login()

运行后,会出现一个链接,点击后在浏览器中登录或创建账号,然后返回终端完成授权。
2. 初始化实验
每次实验开始时,使用 wandb.init() 初始化:

# 初始化一个新的实验
wandb.init(
    project="我的第一个项目",  # 项目名称
    name="实验1",             # 实验名称(可选)
    config={                  # 超参数配置(可选)
        "learning_rate": 0.01,
        "epochs": 10,
        "batch_size": 32
    }
)

# 可以通过 wandb.config 访问配置
config = wandb.config
  1. 跟踪指标
    在训练过程中,使用 wandb.log() 记录关键指标:
import wandb
import random
import time

# 登录wandb
wandb.login()

# 初始化实验
wandb.init(
    project="wandb-tutorial",
    name="example-training",
    config={
        "learning_rate": 0.001,
        "epochs": 50,
        "batch_size": 64,
        "model_architecture": "CNN"
    }
)

config = wandb.config

# 模拟训练过程
for epoch in range(config.epochs):
    # 模拟训练指标
    loss = 0.5 * (1.0 / (epoch + 1)) + random.uniform(-0.01, 0.01)
    accuracy = 0.5 + 0.4 * (epoch / config.epochs) + random.uniform(-0.01, 0.01)
    
    # 记录指标
    wandb.log({
        "训练损失": loss,
        "训练准确率": accuracy,
        "学习率": config.learning_rate * (0.95 ** epoch)  # 模拟学习率衰减
    }, step=epoch)
    
    # 打印进度
    if (epoch + 1) % 10 == 0:
        print(f"Epoch {epoch+1}/{config.epochs} - 损失: {loss:.4f} - 准确率: {accuracy:.4f}")
    
    time.sleep(0.1)  # 模拟训练耗时

# 训练结束
print("训练完成!")

# 可以保存模型文件
# wandb.save("model.h5")

# 结束实验
wandb.finish()
  1. 查看实验结果
    运行代码后,会自动生成一个链接,点击即可在浏览器中查看实验面板:
wandb: View run example-training at: https://wandb.ai/your-username/wandb-tutorial/runs/xxxxxx

在面板中,你可以看到:
指标随时间变化的图表
超参数配置
系统资源使用情况
实验比较工具
5. 跟踪更多内容
除了基本指标,wandb 还可以跟踪:
图像

# 跟踪图像(例如模型生成的图像或混淆矩阵)
wandb.log({"示例图像": wandb.Image(your_image_array)})

模型文件

# 保存并跟踪模型文件
torch.save(model.state_dict(), "model.pt")
wandb.save("model.pt")

表格数据

# 跟踪表格数据
data = [[1, 2], [3, 4]]
table = wandb.Table(data=data, columns=["x", "y"])
wandb.log({"示例表格": table})

使用命令行工具
wandb 还提供了命令行工具,方便管理实验:

# 查看项目中的实验
wandb runs list

# 恢复一个中断的实验
wandb resume

# 同步本地实验到云端
wandb sync

高级功能
实验比较:在网页界面中选择多个实验,比较它们的指标和超参数
Sweeps:自动超参数优化
Reports:创建交互式报告分享实验结果
Artifacts:跟踪数据集、模型等大型文件
总结
wandb 是机器学习项目中非常实用的工具,它能帮助你:
系统化地记录实验过程
直观地比较不同实验结果
轻松分享你的工作
避免 “我上次是怎么得到这个结果的?” 这样的问题
通过本文的介绍,你已经掌握了 wandb 的基本用法。要了解更多高级功能,可以查看 官方文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值