python - Pytorch 神经网络中张量大小错误
问题描述
我想使用预训练的 AlexNet 对我的数据集中的非分类图像进行分类,我得到一个RuntimeError: stack expects each tensor to be equal size, but got [3, 224, 224] at entry 0 and [4, 224, 224] 在我的 Jupyter Notebook 的 417 单元格的第 19 项。请你帮我解决这样的错误。
我有一个包含不同房间图像的数据集:浴室、厨房、客厅等。所以,我有 6 个班级。我有 1547 张图片被分类,我想使用预训练的神经网络对其他图片进行分类。我在 Pytorch 中创建了一个数据集,然后我下载了预训练的 AlexNet,然后我在张量的大小上遇到了这样的错误。拜托,你能帮帮我吗? Colab 与代码
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-417-17d11cc21579> in <module>
3 # Train phase
4 model.train()
----> 5 for idx, (inputs, labels) in enumerate(data_loader['train']):
6 optimizer.zero_grad()
7 inputs = inputs.to(device)
~/opt/anaconda3/lib/python3.7/site-packages/torch/utils/data/dataloader.py in __next__(self)
519 if self._sampler_iter is None:
520 self._reset()
--> 521 data = self._next_data()
522 self._num_yielded += 1
523 if self._dataset_kind == _DatasetKind.Iterable and \
~/opt/anaconda3/lib/python3.7/site-packages/torch/utils/data/dataloader.py in _next_data(self)
559 def _next_data(self):
560 index = self._next_index() # may raise StopIteration
--> 561 data = self._dataset_fetcher.fetch(index) # may raise StopIteration
562 if self._pin_memory:
563 data = _utils.pin_memory.pin_memory(data)
~/opt/anaconda3/lib/python3.7/site-packages/torch/utils/data/_utils/fetch.py in fetch(self, possibly_batched_index)
45 else:
46 data = self.dataset[possibly_batched_index]
---> 47 return self.collate_fn(data)
~/opt/anaconda3/lib/python3.7/site-packages/torch/utils/data/_utils/collate.py in default_collate(batch)
82 raise RuntimeError('each element in list of batch should be of equal size')
83 transposed = zip(*batch)
---> 84 return [default_collate(samples) for samples in transposed]
85
86 raise TypeError(default_collate_err_msg_format.format(elem_type))
~/opt/anaconda3/lib/python3.7/site-packages/torch/utils/data/_utils/collate.py in <listcomp>(.0)
82 raise RuntimeError('each element in list of batch should be of equal size')
83 transposed = zip(*batch)
---> 84 return [default_collate(samples) for samples in transposed]
85
86 raise TypeError(default_collate_err_msg_format.format(elem_type))
~/opt/anaconda3/lib/python3.7/site-packages/torch/utils/data/_utils/collate.py in default_collate(batch)
54 storage = elem.storage()._new_shared(numel)
55 out = elem.new(storage)
---> 56 return torch.stack(batch, 0, out=out)
57 elif elem_type.__module__ == 'numpy' and elem_type.__name__ != 'str_' \
58 and elem_type.__name__ != 'string_':
RuntimeError: stack expects each tensor to be equal size, but got [3, 224, 224] at entry 0 and [4, 224, 224] at entry 19
解决方案
推荐阅读
- angular-material - 屏幕阅读器(NVDA)未读取垫选择的预选值和展开/折叠状态
- javascript - 我在 html 中创建了一个自定义分页,我的上一个和下一个按钮不起作用
- sql - 在 SQL 中的事务回滚后,ID 会增加
- scala - 如何测试传递给 ScalarDB 函数的参数
- php - 如果我在返回链中将其访问移得太远,mysqli::$error 不包含错误消息
- authentication - SendGrid 域认证 Heroku
- amazon-web-services - 可以仅在特定 IP 上禁用 Aws 速率限制吗?
- python - 如何使用键盘启动 python 代码
- flutter - 按下返回按钮时,在颤动中处理后使用了 Videoplayercontroller 的错误
- android - 我一直在尝试在 kotlin 中使用 For Loop 来遍历这个 JsonObject