# PyTorch中使用TensorBoard的方法 ## 1. TensorBoard简介 TensorBoard是TensorFlow的可视化工具包,但得益于其强大的功能,现已被广泛应用于其他深度学习框架如PyTorch中。它能够帮助开发者: - 可视化模型结构 - 跟踪训练指标(如损失、准确率) - 分析计算图 - 查看权重直方图 - 展示图像/文本/音频样本 ## 2. PyTorch集成TensorBoard PyTorch通过`torch.utils.tensorboard`模块提供原生支持,无需额外安装TensorFlow。 ### 2.1 安装依赖 ```bash pip install torch torchvision tensorboard
from torch.utils.tensorboard import SummaryWriter # 创建Writer实例 writer = SummaryWriter('runs/experiment_1') # 指定日志目录 # 记录标量数据 for epoch in range(100): loss = train_one_epoch() writer.add_scalar('Training Loss', loss, epoch) # 关闭Writer writer.close()
# 记录单个标量 writer.add_scalar('Loss/train', train_loss, epoch) # 同时记录多个标量 writer.add_scalars('Loss', { 'train': train_loss, 'val': val_loss }, epoch)
model = MyModel() dummy_input = torch.rand(1, 3, 224, 224) # 适配模型输入的假数据 writer.add_graph(model, dummy_input)
# 记录参数分布 for name, param in model.named_parameters(): writer.add_histogram(name, param, epoch)
# 记录特征向量 features = model.get_features(images) writer.add_embedding(features, metadata=labels)
# 记录单张图像 writer.add_image('input_image', img_tensor) # 记录多张图像网格 writer.add_images('batch_images', img_batch) # 记录matplotlib图像 fig = plt.figure() plt.plot(x, y) writer.add_figure('matplotlib_fig', fig)
# 创建自定义仪表盘 writer.add_custom_scalars({ 'Loss': ['Multiline', ['Loss/train', 'Loss/val']], 'Accuracy': ['Multiline', ['Acc/train', 'Acc/val']] })
from torch.utils.tensorboard.summary import hparams writer.add_hparams( {'lr': 0.01, 'bsize': 32}, {'hparam/accuracy': 0.9, 'hparam/loss': 0.1} )
tensorboard --logdir=runs/ --port=6006
def train(model, train_loader, val_loader, epochs=10): writer = SummaryWriter() for epoch in range(epochs): # 训练阶段 model.train() for batch_idx, (data, target) in enumerate(train_loader): output = model(data) loss = criterion(output, target) loss.backward() optimizer.step() # 记录batch级指标 if batch_idx % 100 == 0: writer.add_scalar('Loss/train_batch', loss.item(), epoch*len(train_loader)+batch_idx) # 验证阶段 val_loss, acc = validate(model, val_loader) writer.add_scalar('Loss/val', val_loss, epoch) writer.add_scalar('Accuracy/val', acc, epoch) # 记录模型参数 for name, param in model.named_parameters(): writer.add_histogram(name, param, epoch) # 记录最终模型 torch.save(model.state_dict(), 'model.pth') writer.add_text('Model', 'Training completed and model saved') writer.close()
--port
参数指定不同端口runs/
目录下的旧实验writer.close()
被调用PyTorch与TensorBoard的结合为深度学习实验提供了强大的可视化支持。通过合理使用各种记录方法,开发者可以:
建议在项目初期就集成TensorBoard,将可视化作为开发流程的标准组成部分。 “`
注:实际运行时请根据PyTorch和TensorBoard的版本调整语法,本文基于PyTorch 1.8+和TensorBoard 2.4+编写。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。