RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same
My code from the Pytorch’s tutorial. In particular, I followed the instruction to do that:
net&#32;=&#32;Net()
device&#32;=&#32;torch.device("cuda:0"&#32;if&#32;torch.cuda.is_available()&#32;else&#32;"cpu")
net.to(device)

And also, did this:
inputs,&#32;labels&#32;=&#32;inputs.to(device),&#32;labels.to(device)
The tutorial mentioned how to add GPU support for the example, but didn’t put it into the complete code example. So I guess the way I added the GPU was incorrect, as above. Thanks for help.
import&#32;torch.nn&#32;as&#32;nn**strong text**
import&#32;torch.nn.functional&#32;as&#32;F

import&#32;torchvision.transforms&#32;as&#32;transforms
import&#32;torchvision
import&#32;torch

import&#32;matplotlib

matplotlib.use("TkAgg")
import&#32;matplotlib.pyplot&#32;as&#32;plt
import&#32;numpy

class&#32;Net(nn.Module):
&#32;&#32;&#32;&#32;def&#32;__init__(self):
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;super(Net,&#32;self).__init__()
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;self.conv1&#32;=&#32;nn.Conv2d(3,&#32;6,&#32;5)
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;self.pool&#32;=&#32;nn.MaxPool2d(2,&#32;2)
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;self.conv2&#32;=&#32;nn.Conv2d(6,&#32;16,&#32;5)

&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;self.fc1&#32;=&#32;nn.Linear(16&#32;*&#32;5&#32;*&#32;5,&#32;120)
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;self.fc2&#32;=&#32;nn.Linear(120,&#32;84)
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;self.fc3&#32;=&#32;nn.Linear(84,&#32;10)

&#32;&#32;&#32;&#32;def&#32;forward(self,&#32;x):
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;x&#32;=&#32;self.pool(F.relu(self.conv1(x)))
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;x&#32;=&#32;self.pool(F.relu(self.conv2(x)))
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;x&#32;=&#32;x.view(-1,&#32;16&#32;*&#32;5&#32;*&#32;5)
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;x&#32;=&#32;F.relu(self.fc1(x))
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;x&#32;=&#32;F.relu(self.fc2(x))
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;x&#32;=&#32;self.fc3(x)

&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;return&#32;x

net&#32;=&#32;Net()

device&#32;=&#32;torch.device("cuda:0"&#32;if&#32;torch.cuda.is_available()&#32;else&#32;"cpu")
net.to(device)

transform&#32;=&#32;transforms.Compose([transforms.ToTensor(),&#32;transforms.Normalize((0.5,&#32;0.5,&#32;0.5),&#32;(0.5,&#32;0.5,&#32;0.5))])
print(transform)

trainSet&#32;=&#32;torchvision.datasets.CIFAR10(root='./data',&#32;train=True,&#32;download=True,&#32;transform=transform)
trainLoader&#32;=&#32;torch.utils.data.DataLoader(trainSet,&#32;batch_size=4,&#32;shuffle=True,&#32;num_workers=2)

testSet&#32;=&#32;torchvision.datasets.CIFAR10(root='./data',&#32;train=False,&#32;download=True,&#32;transform=transform)
testLoader&#32;=&#32;torch.utils.data.DataLoader(testSet,&#32;batch_size=4,&#32;shuffle=False,&#32;num_workers=2)

classes&#32;=&#32;('plane',&#32;'car',&#32;'bird',&#32;'cat',&#32;'deer',&#32;'dog',&#32;'frog',&#32;'horse',&#32;'ship',&#32;'truck')

import&#32;torch.optim&#32;as&#32;optim

criterion&#32;=&#32;nn.CrossEntropyLoss()
optimizer&#32;=&#32;optim.SGD(net.parameters(),&#32;lr=0.001,&#32;momentum=0.9)

for&#32;epoch&#32;in&#32;range(2):
&#32;&#32;&#32;&#32;running_loss&#32;=&#32;0.0
&#32;&#32;&#32;&#32;for&#32;i,&#32;data&#32;in&#32;enumerate(trainLoader,&#32;0):
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;inputs,&#32;labels&#32;=&#32;data
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;inputs,&#32;labels&#32;=&#32;inputs.to(device),&#32;labels.to(device)

&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;optimizer.zero_grad()

&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;outputs&#32;=&#32;net(inputs)
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;loss&#32;=&#32;criterion(outputs,&#32;labels)
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;loss.backward()
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;optimizer.step()

&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;running_loss&#32;+=&#32;loss.item()
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;if&#32;i&#32;%&#32;2000&#32;==&#32;1999:
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;print('[%d,&#32;%5d]&#32;loss&#32;%.3f'&#32;%&#32;(epoch&#32;+&#32;1,&#32;i&#32;+&#32;1,&#32;running_loss&#32;/&#32;2000))

print('Finished&#32;traning!')

def&#32;imshow(img):
&#32;&#32;&#32;&#32;img&#32;=&#32;img&#32;/&#32;2&#32;+&#32;0.5
&#32;&#32;&#32;&#32;npimg&#32;=&#32;img.numpy()
&#32;&#32;&#32;&#32;plt.imshow(numpy.transpose(npimg,&#32;(1,&#32;2,&#32;0)))
&#32;&#32;&#32;&#32;plt.show()

dataIter&#32;=&#32;iter(trainLoader)
images,&#32;labels&#32;=&#32;dataIter.next()
#&#32;imshow(torchvision.utils.make_grid(images))

print('GroundTruth:&#32;',&#32;'&#32;'.join('%5s'&#32;%&#32;classes[labels[j]]&#32;for&#32;j&#32;in&#32;range(4)))

outputs&#32;=&#32;net(images)

_,&#32;predicted&#32;=&#32;torch.max(outputs,&#32;1)

print('Predicted:&#32;',&#32;'&#32;'.join('%5s'&#32;%&#32;classes[predicted[j]]&#32;for&#32;j&#32;in&#32;range(4)))
dataIter&#32;=&#32;iter(testLoader)
images,&#32;labels&#32;=&#32;dataIter.next()
#&#32;imshow(torchvision.utils.make_grid(images))

correct&#32;=&#32;0
total&#32;=&#32;0

with&#32;torch.no_grad():
&#32;&#32;&#32;&#32;for&#32;data&#32;in&#32;testLoader:
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;images,&#32;labels&#32;=&#32;data
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;outputs&#32;=&#32;net(images)
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;_,&#32;predicted&#32;=&#32;torch.max(outputs.data,&#32;1)
&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;total&#32;+=&#32;labels.size(0)

&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;correct&#32;+=&#32;(predicted&#32;==&#32;labels).sum().item()

print("accuracy:&#32;%d&#32;%%",&#32;100&#32;*&#32;correct&#32;/&#32;total)