def img_convert(tensor):
image = tensor.clone().detach().numpy()
image = image.transpose(1, 2, 0)
print(image.shape)
image = image*np.array(0.5,) + np.array(0.5,)
image = image.clip(0, 1)
return image
dataiter = iter(training_loader)
images, labels = dataiter.next()
fig = plt.figure(figsize=(25, 4))
for idx in np.arange(20):
ax = fig.add_subplot(2, 10, idx+1, xticks=[], yticks=[])
plt.imshow(img_convert(images[idx]))
ax.set_title([labels[idx].item()])
Can someone help me with this error can’t figure out how to resolve this, first I had gray scale problem then after fixing it there is a new issue.
Invalid dimension for image data
ptrblck
August 27, 2019, 10:36am
#3
Could you print the shape of images[idx]
and the returned numpy array from img_convert
?
PS: You can add code snippets using three backticks ```
1 Like
On printing the shape of images[idx] I find the shape is reversed
Output:
torch.Size([1, 28, 28])
(28, 28, 1)
However if I put a transpose command
images[idx].transpose(1, 2, 0)
so which 2 positional arguments should I give
ptrblck
August 27, 2019, 11:16am
#5
If you are dealing with grayscale images, you should remove the channel dimension for matplotlib
:
plt.imshow(np.random.randn(24, 24, 3)) # works
plt.imshow(np.random.randn(24, 24)) # works
plt.imshow(np.random.randn(24, 24, 1)) # fails
1 Like
So what do you suggest I should do in my above mentioned code
Where should I remove the channel dimensions in the img_conver method or in the below for loop
ptrblck
August 27, 2019, 11:29am
#7
I would add something like:
if image.shape[2] == 1:
image = image[:, :, 0]
return image
into your img_convert
method.
1 Like