I am currently taking a deep learning class from IBM on EDx, and IBM’s Cognitive labs is using torchvision 0.2.1. In attempting to run under Anaconda using Windows 10 on my own machine (which uses torchvision 0.3.0), I noticed a difference which I cannot find documented anywhere. (Both environments are using python 3.6 versions.)
The output of a transformed MNIST character’s 2nd dimension has changed from a tensor to an int between torchvision 0.2.1 and 0.3.0.
here is the code i used to test:
import torch
import torchvision
import torchvision.transforms as transforms
import torchvision.datasets as dsetsprint(“torch: \t”, torch.version)
print(“torchvisiion:\t”, torchvision.version)
print()# create a transform to resize the image and convert it to a tensor
IMAGE_SIZE = 16composed = transforms.Compose([transforms.Resize((IMAGE_SIZE, IMAGE_SIZE)), transforms.ToTensor()])
# Load the training dataset
train_dataset = dsets.MNIST(root=‘./data’, train=True, download=True, transform=composed)# Show the data type for each element in dataset
for i in range(len(train_dataset[0])):
print(“train_dataset[0][{}]:\t{}\n{}\n”.format(I, type(train_dataset[0][i]), train_dataset[0][i]))
===============================================
this is the output produced byt the program on Cognitive Labs:
torch: 0.4.1
torchvisiion: 0.2.1train_dataset[0][0]: <class ‘torch.Tensor’>
tensor([[[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0078,
0.0196, 0.0824, 0.1059, 0.0980, 0.1843, 0.0902, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0039, 0.0824, 0.2157, 0.3765, 0.5333,
0.6118, 0.7373, 0.6627, 0.6196, 0.7647, 0.3020, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0118, 0.3804, 0.8549, 0.9294, 0.9569,
0.8784, 0.9294, 0.4588, 0.2510, 0.2000, 0.0510, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.1569, 0.4588, 0.7765, 0.7608,
0.2353, 0.3137, 0.1412, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0078, 0.4275, 0.6941,
0.1137, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0980, 0.6235,
0.5647, 0.2627, 0.0235, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0039, 0.2039,
0.6549, 0.8039, 0.3490, 0.0392, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0039,
0.0980, 0.5137, 0.8863, 0.3255, 0.0078, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0078, 0.0980,
0.3373, 0.6667, 0.9608, 0.3882, 0.0078, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0039, 0.0627, 0.3294, 0.7098,
0.9137, 0.8706, 0.5647, 0.1373, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0118, 0.0784, 0.3137, 0.5843, 0.8980, 0.8824,
0.6235, 0.2667, 0.0510, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.2627, 0.7059, 0.9020, 0.8745, 0.7059, 0.2941,
0.0510, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.1333, 0.2706, 0.2549, 0.1647, 0.0510, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000]]])train_dataset[0][1]: <class ‘torch.Tensor’>
5
===============================================
this is the output produced on my machine:
torch: 1.1.0
torchvisiion: 0.3.0train_dataset[0][0]: <class ‘torch.Tensor’>
tensor([[[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0078,
0.0196, 0.0824, 0.1059, 0.0980, 0.1843, 0.0902, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0039, 0.0824, 0.2157, 0.3765, 0.5333,
0.6118, 0.7373, 0.6627, 0.6196, 0.7647, 0.3020, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0118, 0.3804, 0.8549, 0.9294, 0.9569,
0.8784, 0.9294, 0.4588, 0.2510, 0.2000, 0.0510, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.1569, 0.4588, 0.7765, 0.7608,
0.2353, 0.3137, 0.1412, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0078, 0.4275, 0.6941,
0.1137, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0980, 0.6235,
0.5647, 0.2627, 0.0235, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0039, 0.2039,
0.6549, 0.8039, 0.3490, 0.0392, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0039,
0.0980, 0.5137, 0.8863, 0.3255, 0.0078, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0078, 0.0980,
0.3373, 0.6667, 0.9608, 0.3882, 0.0078, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0039, 0.0627, 0.3294, 0.7098,
0.9137, 0.8706, 0.5647, 0.1373, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0118, 0.0784, 0.3137, 0.5843, 0.8980, 0.8824,
0.6235, 0.2667, 0.0510, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.2627, 0.7059, 0.9020, 0.8745, 0.7059, 0.2941,
0.0510, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.1333, 0.2706, 0.2549, 0.1647, 0.0510, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000],
[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000]]])train_dataset[0][1]: <class ‘int’>
5
===============================================
I have also verified that conda also reflects this difference when tested with the same environment using torchvision 0.2.1 and 0.3.0.
Please advise if this is an intentional change or a “bug”.
Regards,
Jim