PyTorch中常用的工具(3)TensorBoard

文章目录

  • 前言
  • [3 可视化工具](#3 可视化工具)
    • [3.1 TensorBoard](#3.1 TensorBoard)

前言

在训练神经网络的过程中需要用到很多的工具,最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块,合理使用这些工具可以极大地提高编程效率。

由于内容较多,本文分成了五篇文章(1)数据处理(2)预训练模型(3)TensorBoard(4)Visdom(5)CUDA与小结。

整体结构如下:

  • 1 数据处理
    • 1.1 Dataset
    • 1.2 DataLoader
  • 2 预训练模型
  • 3 可视化工具
  • 3.1 TensorBoard
  • 3.2 Visdom
  • 4 使用GPU加速:CUDA
  • 5 小结

全文链接:

  1. PyTorch中常用的工具(1)数据处理
  2. PyTorch常用工具(2)预训练模型
  3. PyTorch中常用的工具(3)TensorBoard
  4. PyTorch中常用的工具(4)Visdom
  5. PyTorch中常用的工具(5)使用GPU加速:CUDA

3 可视化工具

在训练神经网络时,通常希望能够更加直观地了解训练情况,例如损失函数曲线、输入图片、输出图片等信息。这些信息可以帮助读者更好地监督网络的训练过程,并为参数优化提供方向和依据。最简单的办法就是打印输出,这种方式只能打印数值信息,不够直观,同时无法查看分布、图片、声音等。本节介绍两个深度学习中常用的可视化工具:TensorBoard和Visdom。

3.1 TensorBoard

最初,TensorBoard是作为TensorFlow的可视化工具迅速流行开来的。作为和TensorFlow深度集成的工具,TensorBoard能够展示TensorFlow的网络计算图,绘制图像生成的定量指标图以及附加数据。同时,TensorBoard是一个相对独立的工具,只要用户保存的数据遵循相应的格式,TensorBoard就能读取这些数据,进行可视化。

在PyTorch 1.1.0版本之后,PyTorch已经内置了TensorBoard的相关接口,用户在手动安装TensorBoard后便可调用相关接口进行数据的可视化,TensorBoard的主界面如下图所示。

![使用add_scalar记录标量]](https://img-blog.csdnimg.cn/direct/864745746f6244e080a0793ae578e5a1.png#pic_center)

TensorBoard的使用非常简单,首先使用以下命令安装TensorBoard:

bash 复制代码
pip install tensorboard

待安装完成后,通过以下命令启动TensorBoard,其中path为log文件的保存路径:

bash 复制代码
tensorboard --logdir=path

TensorBoard的常见操作包括记录标量、显示图像、显示直方图、显示网络结构、可视化embedding等,下面逐一举例说明:

python 复制代码
In: import torch
    import torch.nn as nn
    import numpy as np
    from torchvision import models
    from torch.utils.tensorboard import SummaryWriter
    from torchvision import datasets,transforms
    from torch.utils.data import DataLoader
    # 构建logger对象,log_dir用来指定log文件的保存路径
    logger = SummaryWriter(log_dir='runs')
python 复制代码
In: # 使用add_scalar记录标量
    for n_iter in range(100):
        logger.add_scalar('Loss/train', np.random.random(), n_iter)
        logger.add_scalar('Loss/test', np.random.random(), n_iter)
        logger.add_scalar('Acc/train', np.random.random(), n_iter)
        logger.add_scalar('Acc/test', np.random.random(), n_iter)
python 复制代码
In: transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.5,),(0.5,))
    ])
    dataset = datasets.MNIST('data/', download=True, train=False, transform=transform)
    dataloader = DataLoader(dataset, shuffle=True, batch_size=16)
    images, labels = next(iter(dataloader))
    grid = torchvision.utils.make_grid(images)
python 复制代码
In: # 使用add_image显示图像
    logger.add_image('images', grid, 0)
python 复制代码
In: # 使用add_graph可视化网络
	class ToyModel(nn.Module):
    	def __init__(self, input_size=28, hidden_size=500, num_classes=10):
        	super().__init__()
        	self.fc1 = nn.Linear(input_size, hidden_size) 
        	self.relu = nn.ReLU()
        	self.fc2 = nn.Linear(hidden_size, num_classes)  
    	def forward(self, x):
        	out = self.fc1(x)
        	out = self.relu(out)
        	out = self.fc2(out)
        	return out
	model = ToyModel()
	logger.add_graph(model, images)
python 复制代码
In: # 使用add_histogram显示直方图
    logger.add_histogram('normal', np.random.normal(0,5,1000), global_step=1)
    logger.add_histogram('normal', np.random.normal(1,2,1000), global_step=10)
python 复制代码
In: # 使用add_embedding进行embedding可视化
    dataset = datasets.MNIST('data/', download=True, train=False)
    images = dataset.data[:100].float()
    label = dataset.targets[:100]
    features = images.view(100, 784)
    logger.add_embedding(features, metadata=label, label_img=images.unsqueeze(1))

打开浏览器输入http://localhost:6006(其中,6006应改成读者TensorBoard所绑定的端口),就可以看到本文之前的可视化结果。

TensorBoard十分容易上手,读者可以根据个人需求灵活地使用上述函数进行可视化。本节介绍了TensorBoard的常见操作,更多详细内容读者可参考官方相关源码。

相关推荐
池央35 分钟前
AI性能极致体验:通过阿里云平台高效调用满血版DeepSeek-R1模型
人工智能·阿里云·云计算
我们的五年36 分钟前
DeepSeek 和 ChatGPT 在特定任务中的表现:逻辑推理与创意生成
人工智能·chatgpt·ai作画·deepseek
Yan-英杰37 分钟前
百度搜索和文心智能体接入DeepSeek满血版——AI搜索的新纪元
图像处理·人工智能·python·深度学习·deepseek
Fuweizn39 分钟前
富唯智能可重构柔性装配产线:以智能协同赋能制造业升级
人工智能·智能机器人·复合机器人
weixin_307779132 小时前
Azure上基于OpenAI GPT-4模型验证行政区域数据的设计方案
数据仓库·python·云计算·aws
玩电脑的辣条哥3 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
taoqick3 小时前
对PosWiseFFN的改进: MoE、PKM、UltraMem
人工智能·pytorch·深度学习
suibian52353 小时前
AI时代:前端开发的职业发展路径拓宽
前端·人工智能
预测模型的开发与应用研究4 小时前
数据分析的AI+流程(个人经验)
人工智能·数据挖掘·数据分析
源大模型4 小时前
OS-Genesis:基于逆向任务合成的 GUI 代理轨迹自动化生成
人工智能·gpt·智能体