如何解决AttributeError:“ numpy.ndarray”对象没有属性“ imshow”
dm = torch.as_tensor(cifar100_mean,**setup)[:,None,None]
ds = torch.as_tensor(cifar100_std,None]
def plot(tensor):
tensor = tensor.clone().detach()
tensor.mul_(ds).add_(dm).clamp_(0,1) # multiply ground_truth tensor value by ds then add dm,then clamp (limit the max and min boarder)
if tensor.shape[0] == 1: #when num_iamge=1
return plt.imshow(tensor[0].permute(1,2,0).cpu()); # convert (3,32,32) to (32,3)
else:
fig,axes = plt.subplots(4,5,figsize=(12,12)) #figsize=(12,tensor.shape[0]*12)
for idx,img in enumerate(tensor):
axes[idx].imshow(img.permute(1,0).cpu());
这是我用来制作20张图像作为子图的绘图功能。 (4行5列) 还有这部分
axes[idx].imshow(img.permute(1,0).cpu());
给我一条错误消息
AttributeError: 'numpy.ndarray' object has no attribute 'imshow'
和部分def plot(tensor):
(张量)表示CIFAR100图像的列表。下面是我如何定义ground_truth。
from torchvision import models,datasets,transforms
toPIL = transforms.ToPILImage()
device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
#variables
num_images = 20
#in data_processing.py - for reference. Do not comment in again
# validloader = torch.utils.data.DataLoader(validset,batch_size=min(defs.batch_size,len(trainset)),# shuffle=False,drop_last=False,num_workers=num_workers,pin_memory=PIN_MEMORY)
# validset = torchvision.datasets.CIFAR100(root=data_path,train=False,download=True,transform=transforms.ToTensor())
#images and labels
ground_truth,labels = [],[]
idx = 125 # choosen randomly ... just whatever you want
while len(labels) < num_images:
img,label = validloader.dataset[idx]
idx += 1
if label not in labels:
labels.append(torch.as_tensor((label,),device=setup['device']))
ground_truth.append(img.to(device))
ground_truth = torch.stack(ground_truth)
labels = torch.cat(labels)
labels_print = [validloader.dataset.classes[l] for l in labels]
plot(ground_truth);
print(labels_print);
如何将20张图像打印为子图?任何其他方法都可以。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。