hi friends
I was trying to execute a simple code and encountered this error while calculating the loss . Can anyone tell me the code problem? Thanks
from torchvision.datasets import Cityscapes
transform = transforms.Compose([
transforms.Resize([256,256]),
transforms.ToTensor()
])
trainset = Cityscapes(root='/cityscape', split='train', mode='fine', target_type='semantic', transform=transform, target_transform=transform)
valset = Cityscapes(root='/cityscape', split='train', mode='fine', target_type='semantic', transform=transform, target_transform=transform)
trainloader = torch.utils.data.DataLoader( trainset, batch_size=2, shuffle=True, num_workers=0)
valloader = torch.utils.data.DataLoader( valset, batch_size=2, shuffle=True, num_workers=0)
from torchvision import models
model = models.segmentation.deeplabv3_resnet101(pretrained=False,progress=True,num_classes=19)
model = model.to(device)
optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
criterion = nn.CrossEntropyLoss()
def train_model(model, dataloaders, criterion, optimizer, num_epochs):
since = time.time()
val_acc_history = []
best_model_wts = copy.deepcopy(model.state_dict())
best_acc = 0.0
for epoch in range(num_epochs):
# Each epoch has a training and validation phase
for phase in ['train', 'val']:
if phase == 'train':
model.train() # Set model to training mode
else:
model.eval() # Set model to evaluate mode
running_loss = 0.0
running_corrects = 0
for inputs, labels in dataloaders[phase]:
inputs = inputs.to(device)
labels = labels.to(device)
# zero the parameter gradients
optimizer.zero_grad()
# track history if only in train
with torch.set_grad_enabled(phase == 'train'):
outputs = model(inputs)
loss = criterion(outputs, labels)
_, preds = torch.max(outputs, 1)
'''
/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py in cross_entropy(input, target, weight, size_average, ignore_index, reduce, reduction, label_smoothing)
2844 if size_average is not None or reduce is not None:
2845 reduction = _Reduction.legacy_get_string(size_average, reduce)
-> 2846 return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index, label_smoothing)
2847
2848
TypeError: cross_entropy_loss(): argument 'input' (position 1) must be Tensor, not collections.OrderedDict
'''