I met a strange Pytorch error and I can not fix it for a long time. I think this error is associated with the Pytorch DataLoader.
Here is the error info:
RuntimeError: Traceback (most recent call last):
  File "/home/leexy/softwares/anaconda3/lib/python3.6/site- 
packages/torch/utils/data/dataloader.py", line 55, in _worker_loop
    samples = collate_fn([dataset[i] for i in batch_indices])
  File "/home/leexy/softwares/anaconda3/lib/python3.6/site- 
packages/torch/utils/data/dataloader.py", line 135, in default_collate
    return [default_collate(samples) for samples in transposed]
  File "/home/leexy/softwares/anaconda3/lib/python3.6/site- 
packages/torch/utils/data/dataloader.py", line 135, in <listcomp>
    return [default_collate(samples) for samples in transposed]
  File "/home/leexy/softwares/anaconda3/lib/python3.6/site- 
packages/torch/utils/data/dataloader.py", line 112, in default_collate
    return torch.stack(batch, 0, out=out)
  File "/home/leexy/softwares/anaconda3/lib/python3.6/site- 
packages/torch/functional.py", line 66, in stack
    return torch.cat(inputs, dim, out=out)
RuntimeError: invalid argument 0: Sizes of tensors must match except in 
dimension 0. Got 3 and 1 in dimension 1 at /pytorch/torch/lib/TH/generic/THTensorMath.c:2897

And here is my traceback:
RuntimeError                              Traceback (most recent call last)
<ipython-input-16-28ab8a5aa636> in <module>()
----> 1 train_fc(resnet50, loss_fn, optimizer_fc, 
val_dataloader=validation_set_loader, num_epochs=40)#fig_loss_x_fc, 
fig_loss_y_fc = train_fc(resnet50_places365, loss_fn, optimizer_fc, 
num_epochs=40)

<ipython-input-13-949e2aa4f672> in train_fc(model, loss_fn, optimizer, 
val_dataloader, num_epochs)
     94         adjust_learning_rate(optimizer, 0.95)
---> 95         for t, (x, y) in enumerate(train_set_loader):
     96             y = y.numpy()
     97             y = y.reshape(-1)

~/softwares/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py in __next__(self)
    265         if self.rcvd_idx in self.reorder_dict:
    266             batch = self.reorder_dict.pop(self.rcvd_idx)
--> 267             return self._process_next_batch(batch)
    268 
    269         if self.batches_outstanding == 0:

~/softwares/anaconda3/lib/python3.6/site- 
packages/torch/utils/data/dataloader.py in _process_next_batch(self, batch)
    299         self._put_indices()
    300         if isinstance(batch, ExceptionWrapper):
--> 301             raise batch.exc_type(batch.exc_msg)
    302         return batch
    303 

I use the Pytorch DataSet and rewrite getitem() and len() method. I check the getitem() method and it can work. I make some DataAugmentation, such as Scale, RandomFlip. But I am sure every image is shaped to 224 * 224 and I’ve check it.
The most important is, this dataset is written some months ago and it can work in other imageset, so I really don’t know how to fix it.
Hi all.
I’ve solved this problem. The error is caused by my images, some of them are PNG format, thus these images have 4 channels. So I change them to the RGB and the problem is solved.