使用tensorboard_logger在Python中展示神经网络模型不同层级的梯度变化图
发布时间:2024-01-09 09:32:15
要使用tensorboard_logger在Python中展示神经网络模型不同层级的梯度变化图,首先需要安装tensorboard_logger库。可以使用以下命令进行安装:
pip install tensorboard_logger
安装完成后,可以按照以下步骤进行实现和展示:
1. 导入所需的库和模块。
import torch import torch.nn as nn import torch.optim as optim from tensorboard_logger import configure, log_value
2. 配置tensorboard_logger。
log_dir = './logs' # tensorboard日志存储目录 configure(log_dir)
3. 创建神经网络模型。
class NeuralNetwork(nn.Module):
def __init__(self):
super(NeuralNetwork, self).__init__()
self.fc1 = nn.Linear(10, 5)
self.fc2 = nn.Linear(5, 2)
def forward(self, x):
x = self.fc1(x)
x = torch.relu(x)
x = self.fc2(x)
return x
net = NeuralNetwork()
4. 定义损失函数和优化器。
criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.01)
5. 创建一个训练函数,并在每个epoch结束时记录梯度变化。
def train():
for epoch in range(10):
optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# 记录梯度变化
for name, param in net.named_parameters():
if param.grad is not None:
log_value(f'gradient/{name}', torch.sum(torch.abs(param.grad)), epoch)
log_value('loss', loss.item(), epoch)
6. 运行训练函数,并查看tensorboard日志。
inputs = torch.randn(1, 10) # 生成随机输入 labels = torch.tensor([0]) # 生成随机标签 train()
在运行上述代码后,将会在指定的log_dir目录下生成日志文件。然后,可以使用以下命令启动tensorboard服务器:
tensorboard --logdir=./logs
然后,在浏览器中访问生成的链接,即可查看神经网络模型不同层级的梯度变化图。
