利用TensorBoardX实时监测模型训练过程中的学习率和损失值
发布时间:2024-01-16 06:37:19
TensorBoardX是一个用于可视化PyTorch模型的扩展包,可以实时监测模型的训练过程中的学习率和损失值,方便我们了解模型的训练情况和调整超参数。
首先,需要在项目中安装TensorBoardX:
pip install tensorboardX
接下来,我们可以使用一个简单的神经网络模型进行示例。首先,导入必要的库:
import torch import torch.nn as nn import torch.optim as optim from tensorboardX import SummaryWriter
然后,定义一个简单的神经网络模型:
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(10, 5)
self.fc2 = nn.Linear(5, 1)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
接下来,我们可以定义一些超参数和数据:
# 超参数 learning_rate = 0.01 num_epochs = 100 # 数据 inputs = torch.randn(100, 10) labels = torch.randn(100, 1)
然后,创建一个模型实例、定义损失函数和优化器:
# 创建模型实例 model = Net() # 定义损失函数 criterion = nn.MSELoss() # 定义优化器 optimizer = optim.SGD(model.parameters(), lr=learning_rate)
接下来,我们可以创建一个SummaryWriter对象来记录训练过程中的学习率和损失值:
# 创建SummaryWriter对象,指定保存的路径
writer = SummaryWriter('logs')
# 开始训练
for epoch in range(num_epochs):
# 前向传播
outputs = model(inputs)
loss = criterion(outputs, labels)
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 记录当前的学习率和损失值
writer.add_scalar('Training Loss', loss.item(), epoch)
writer.add_scalar('Learning Rate', optimizer.state_dict()['param_groups'][0]['lr'], epoch)
# 输出当前的训练信息
if (epoch+1) % 10 == 0:
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))
最后,打开终端,使用如下命令启动TensorBoard:
tensorboard --logdir=logs
然后,打开浏览器,访问http://localhost:6006,即可看到TensorBoard的界面。
在TensorBoard界面的"Scalars"标签下,可以看到学习率和损失值随训练步骤的变化曲线。
通过这个例子,你可以使用TensorBoardX实时监测模型训练过程中的学习率和损失值,以便更好地了解模型的训练情况和调整超参数。同时,你还可以通过TensorBoardX可视化模型的图结构、参数分布、梯度分布等信息,帮助你更好地理解和调试模型。
