Home

Misc

Feb 2018

Pytorch Yielding Image Sizes

Need to get image sizes using torchvision datasets?

If you try to load images with torchvision you may get an error like this:

May throw and give you an error like this at the bottom of the stack trace:

RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 256 and 519 in dimension 2 at /opt/conda/conda-bld/pytorch_1518243271935/work/torch/lib/TH/generic/THTensorMath.c:2897

Each batch is a single tensor (matrix), and pytorch says that all the images in a batch need to be the same size. This makes sense. If you had a 2D matrix row, 1 could not have 5 columns if row 2 has 7 columns. Every row in a matrix has to have the same number of columns. If you want to get the sizes using pytorch, you can just set a batch_size of 1. That way, each image will be its tensor, and you can record/store the sizes. Like so:

I find this useful because pytorch’s image loader seems to load things in a slightly different order than if I just read the files off disk (not to mention it's helpful if you are shuffling via a fixed random seed), and this helps me keep my data for when I want to check my predictions. It will output something like this:

torch.Size([1, 3, 256, 256])

torch.Size([1, 3, 519, 253])

torch.Size([1, 3, 256, 256])

torch.Size([1, 3, 256, 256])

torch.Size([1, 3, 256, 256])

torch.Size([1, 3, 512, 680])

As you can see, images of many sizes using a pytorch dataset!

If you enjoyed this post, be sure to signup for more.

Signup For More