使用Wandbwatch()函数来实时监控您的机器学习实验
发布时间:2024-01-10 16:50:28
Wandb.watch() 是一个函数,用于实时监测和记录机器学习实验中的模型和梯度。
在使用 Wandb.watch() 函数之前,您需要先安装 wandb 库,并登录到wandb.ai。
以下是使用 Wandb.watch() 函数的示例代码:
import torch
import torch.nn as nn
import wandb
# 初始化并登录wandb账号
wandb.login()
# 创建一个空的模型
model = nn.Sequential(
nn.Linear(10, 20),
nn.ReLU(),
nn.Linear(20, 1)
)
# 初始化一个优化器
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
# 定义损失函数
criterion = nn.MSELoss()
# 初始化wandb
wandb.init()
# 开始监控模型
wandb.watch(model)
# 定义训练循环
for epoch in range(10):
# 模型训练代码
optimizer.zero_grad()
inputs = torch.randn(100, 10)
targets = torch.randn(100, 1)
outputs = model(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()
# 每个epoch结束后,记录模型参数、梯度和损失
wandb.log({"epoch": epoch, "loss": loss.item()})
wandb.log({"weights": wandb.Histogram(model[0].weight.grad)})
# 关闭wandb会话
wandb.finish()
在上述代码中,我们首先导入需要的库,然后使用 wandb.login() 登录到 wandb.ai。接下来,我们创建一个空的模型,并初始化优化器和损失函数。然后,我们使用 wandb.init() 初始化 wandb,并通过 wandb.watch(model) 开始监控模型。
在训练循环中,我们首先清零优化器的梯度,然后使用随机样本进行前向传播、计算损失、反向传播和优化模型参数的步骤。在每个epoch结束后,我们使用 wandb.log() 记录模型的损失和参数梯度,并通过 wandb.Histogram() 将梯度以直方图的形式记录。
最后,我们使用 wandb.finish() 结束 wandb 会话。
通过使用 Wandb.watch() 函数,您可以实时监控模型的参数和梯度,并将其记录下来,以便在wandb.ai上进行进一步的分析和可视化。
