使用Wandbwatch()函数来实时跟踪您的神经网络实验
发布时间:2024-01-10 16:54:44
Wandb 是一个用于跟踪实验数据的开源实验管理平台。使用 wandb.watch() 函数可以方便地实时跟踪神经网络的实验进展,包括损失、精度等指标的变化。
首先,我们需要在代码中引入 wandb 库,并在配置文件中设置 WANDB_PROJECT 和 WANDB_API_KEY。WANDB_PROJECT 可以设置为您想要进行实验的项目名称,WANDB_API_KEY 是您的 wandb 账户的 API 密钥。
import wandb wandb.init(project='神经网络实验', api_key='YOUR_API_KEY')
然后,在实例化神经网络模型之后,您需要调用 wandb.watch() 函数来跟踪模型的变化。一般来说,这个函数要在训练循环之前调用。
# 实例化神经网络模型 model = MyNeuralNetwork() # 调用 wandb.watch() 函数 wandb.watch(model)
现在,您的神经网络模型将会自动跟踪其参数变化、梯度、损失以及其他指标。这些变化将会在 wandb 仪表板上进行实时展示。
我们来看一个完整的例子,实现一个简单的全连接神经网络模型进行 MNIST 手写数字分类的实验,并使用 wandb.watch() 函数来跟踪实验进展。
import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
import wandb
wandb.init(project='神经网络实验', api_key='YOUR_API_KEY')
# 定义网络模型
class NeuralNetwork(nn.Module):
def __init__(self):
super(NeuralNetwork, self).__init__()
self.fc1 = nn.Linear(784, 512)
self.fc2 = nn.Linear(512, 10)
self.relu = nn.ReLU()
def forward(self, x):
x = x.view(x.size(0), -1)
x = self.relu(self.fc1(x))
x = self.fc2(x)
return x
# 加载 MNIST 数据集
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True, num_workers=2)
# 实例化网络模型和损失函数
model = NeuralNetwork()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
# 训练循环
for epoch in range(10):
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
if i % 100 == 99:
wandb.log({'loss': running_loss / 100})
running_loss = 0.0
print('Finished Training')
在这个例子中,我们首先引入了所需的库,然后设置了 wandb.init() 函数来初始化实验。在定义和加载数据集、实例化网络模型、损失函数和优化器后,我们使用 wandb.watch() 函数跟踪了网络模型。
在训练循环中,每个小批次训练完后我们都使用 wandb.log() 函数来记录损失,这样就可以实时在 wandb 仪表板上查看实验进展。
最后,我们训练神经网络模型并输出训练完成的提示信息。
通过使用 wandb.watch() 函数,您可以轻松地在训练过程中实时跟踪神经网络的实验进展,并将其记录到 wandb 仪表板中进行可视化和分析。这对于监控模型的训练过程、调试和优化模型都非常有用。
