在训练神经网络时,我们希望能够直观地训练情况,例如损失函数的曲线、输入的图像、模型精度等信息,这些信息可以帮助我们更好地监督网络的训练过程,并为参数优化提供方向和依据。
其实我们可以有个更容易地实现方式就是定义一个列表,然后将每个epoch的训练结果添加到列表中,待模型训练完成之后,使用这个列表中的数据进行可视化以及绘图操作等。
本文提供一个更为专业的操作,它是一个常用的可视化工具:TensorBoard
PyTorch已经内置了TensorBoard的相关接口,用户在安装后便可调用相关接口进行数据可视化。
代码如下
data_transform = T.Compose([ T.ToTensor(), T.Normalize((0.5,), (0.5,)) ]) train_dataset = torchvision.datasets.MNIST('./', train=True, transform=data_transform) val_dataset = torchvision.datasets.MNIST('./', train=False, transform=data_transform) train_loader = torch.utils.data.DataLoader(train_dataset, 16) val_loader = torch.utils.data.DataLoader(val_dataset, 16) img, labels = next(iter(train_loader)) grid = torchvision.utils.make_grid(img) logger = SummaryWriter(log_dir='./log') logger.add_image('images', grid, 0)
首先定义日志写入器,然后将图像网格信息写入即可