for i in train_loader:
images.shape = [64,3,28,28]
I can save images but 64 images are drawed.
How can I save only one image from them?
for i in train_loader:
images.shape = [64,3,28,28]
I can save images but 64 images are drawed.
How can I save only one image from them?
Are you trying to save an image from a tensor? if yes, then you need to specifiy the correct index.
e.g.
tensor1 has shape [64,3,28,28]
then to get one/first image out of it (the batch of 64), you need
image1_tensor= tensor1[0]
now you need to swap the axis to convert it into numpy
image1_numpy = image1_tensor.numpy()
Now if you save image1_numpy, you will get one image.
from torchvision.utils import save_image
images.shape #torch.Size([64,3,28,28])
img1 = images[0] #torch.Size([3,28,28]
# img1 = img1.numpy() # TypeError: tensor or list of tensors expected, got <class 'numpy.ndarray'>
save_image(img1, 'img1.png')
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
In this situation, What should I do?
I tested, this works :
from torchvision.utils import save_image
import torch
import torchvision
rand_tensor= torch.rand(64, 3,28,28)
img1 = rand_tensor[0]
# img1 = img1.numpy() # TypeError: tensor or list of tensors expected, got <class 'numpy.ndarray'>
save_image(img1, 'img1.png')
In my case, I always visualize the images in 2 ways, there are really common I guess:
Suppose our torch tensor follows the NCHW
format.
save_image(make_grid(postprocess_image(batch_tensor), nrow=8),"XXX.jpg")`
where the postprocess_image()
executes some post processing operation, say, unnormalizing.
SummaryWriter.add_image("image", make_grid(postprocess_image(batch_tensor), nrow=8), step)
Yep! Note that add_image()
assume the input tensor is a 3D tensor with CHW format, for other formations, check the docs out!
Hope this helps.
hi, what if I would like to save image into paritcular folder?
what should be added in the save_image function?
save_image(img1, 'img1.png')
Here, you are saving the img1
as img1.png
in your current working directory, that argument is actually the path where you want to save your file
, you can pass anything like folder1/img1.png
in that function as an argument if your file structure looks like this, then the img1.png
will get saved in the folder1
.
current_working_directory
|__folder1
|__file.py