本篇文章小编给大家分享一下pytorch带batch的tensor类型图像显示操作代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
显示图像
绘图最常用的库就是matplotlib:
pip install matplotlib
显示图像会用到matplotlib.pyplot.imshow方法。查阅官方文档可知,该方法接收的图像的通道数要放到后面:
数据加载器中数据的维度是[B, C, H, W],我们每次只拿一个数据出来就是[C, H, W],而matplotlib.pyplot.imshow要求的输入维度是[H, W, C],所以我们需要交换一下数据维度,把通道数放到最后面,这里用到pytorch里面的permute方法(transpose方法也行,不过要交换两次,没这个方便,numpy中的transpose方法倒是可以一次交换完成)
用法示例如下:
>>> x = torch.randn(2, 3, 5) >>> x.size() torch.Size([2, 3, 5]) >>> x.permute(1, 2, 0).size() torch.Size([3, 5, 2])
代码示例
#%% 导入模块 import torch import matplotlib.pyplot as plt from torchvision.utils import make_grid from torch.utils.data import DataLoader from torchvision import datasets, transforms #%% 下载数据集 train_file = datasets.MNIST( root='./dataset/', train=True, transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]), download=True ) #%% 制作数据加载器 train_loader = DataLoader( dataset=train_file, batch_size=9, shuffle=True ) #%% 训练数据可视化 images, labels = next(iter(train_loader)) print(images.size()) # torch.Size([9, 1, 28, 28]) plt.figure(figsize=(9, 9)) for i in range(9): plt.subplot(3, 3, i+1) plt.title(labels[i].item()) plt.imshow(images[i].permute(1, 2, 0), cmap='gray') plt.axis('off') plt.show()
这里以mnist数据集为例,演示一下显示效果。这个代码其实还有一点小问题。数据增强的时候不是进行标准化了嘛,就是在第7行代码:Normalize((0.1307,), (0.3081,))。
所以,如果你想查看训练集的原始图像,还得反标准化。
标准化:image = (image-mean)/std
反标准化:image = image*std+mean
拿imagenet中的一个蚂蚁和蜜蜂的子集做了一下实验,标准化前后的区别还是很明显的:
最终效果
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔