DataLoader PyTorch的参数张量无效

DataLoader PyTorch的参数张量无效,pytorch,torchvision,Pytorch,Torchvision,我使用PyTorch的DataLoader和Imagefolder创建了一个数据集,我的数据集类有两个Imagefolder数据集。这两个数据集是成对的(原始和地面真实图像)。我想把这些数据输入PyTorch神经网络 数据集类: class bsds\u数据集(数据集): def u u初始(自身、ds u主、ds u能量): self.dataset1=ds_main self.dataset2=ds_能量 定义uu获取项目uu(自身,索引): x1=自数据集1[索引] x2=自身数据集2[索

我使用PyTorch的
DataLoader
Imagefolder
创建了一个数据集,我的数据集类有两个Imagefolder数据集。这两个数据集是成对的(原始和地面真实图像)。我想把这些数据输入PyTorch神经网络

数据集类:

class bsds\u数据集(数据集):
def u u初始(自身、ds u主、ds u能量):
self.dataset1=ds_main
self.dataset2=ds_能量
定义uu获取项目uu(自身,索引):
x1=自数据集1[索引]
x2=自身数据集2[索引]
返回x1,x2
定义(自我):
返回长度(自数据集1)
我正在用Imagefolder加载图像:

original_imagefolder='./images/whole'
target_imagefolder='./结果/全部'
原始\u ds=图像文件夹(原始\u图像文件夹,
transform=transforms.ToTensor())
能量\u ds=ImageFolder(目标\u ImageFolder,transform=transforms.ToTensor())
数据集=bsds\U数据集(原始数据集、能量数据集)
加载器=数据加载器(数据集,批量大小=16)
然后我尝试批量迭代:

枚举(加载器)中i、x、y的
:
打印(x)
发生以下错误:

RuntimeError:参数0无效:除维度0外,张量的大小必须匹配。在..\aten\src\TH/generic/THTensor.cpp:711处获得维度2中的321和481

数据集是BSDS500:

数据集中的所有图像均为481x321或321x481像素。 我认为需要进行一些变换,但我不想破坏图像并拉伸它们

完全回溯:

C:\Anaconda3\envs\torchgpu\lib\site-packages\ipykernel_launcher.py:77: UserWarning: nn.init.xavier_normal is now deprecated in favor of nn.init.xavier_normal_.
C:\Anaconda3\envs\torchgpu\lib\site-packages\ipykernel_launcher.py:78: UserWarning: nn.init.constant is now deprecated in favor of nn.init.constant_.
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-42-4c4ba0a13c32> in <module>
      5 optimizer = optim.SGD(model.parameters(), lr=0.001)
      6 for epoch in range(epochs):
----> 7     for i, batch in enumerate(loader):
      8         print(batch)

C:\Anaconda3\envs\torchgpu\lib\site-packages\torch\utils\data\dataloader.py in __next__(self)
    558         if self.num_workers == 0:  # same-process loading
    559             indices = next(self.sample_iter)  # may raise StopIteration
--> 560             batch = self.collate_fn([self.dataset[i] for i in indices])
    561             if self.pin_memory:
    562                 batch = _utils.pin_memory.pin_memory_batch(batch)

C:\Anaconda3\envs\torchgpu\lib\site-packages\torch\utils\data\_utils\collate.py in default_collate(batch)
     66     elif isinstance(batch[0], container_abcs.Sequence):
     67         transposed = zip(*batch)
---> 68         return [default_collate(samples) for samples in transposed]
     69 
     70     raise TypeError((error_msg_fmt.format(type(batch[0]))))

C:\Anaconda3\envs\torchgpu\lib\site-packages\torch\utils\data\_utils\collate.py in <listcomp>(.0)
     66     elif isinstance(batch[0], container_abcs.Sequence):
     67         transposed = zip(*batch)
---> 68         return [default_collate(samples) for samples in transposed]
     69 
     70     raise TypeError((error_msg_fmt.format(type(batch[0]))))

C:\Anaconda3\envs\torchgpu\lib\site-packages\torch\utils\data\_utils\collate.py in default_collate(batch)
     66     elif isinstance(batch[0], container_abcs.Sequence):
     67         transposed = zip(*batch)
---> 68         return [default_collate(samples) for samples in transposed]
     69 
     70     raise TypeError((error_msg_fmt.format(type(batch[0]))))

C:\Anaconda3\envs\torchgpu\lib\site-packages\torch\utils\data\_utils\collate.py in <listcomp>(.0)
     66     elif isinstance(batch[0], container_abcs.Sequence):
     67         transposed = zip(*batch)
---> 68         return [default_collate(samples) for samples in transposed]
     69 
     70     raise TypeError((error_msg_fmt.format(type(batch[0]))))

C:\Anaconda3\envs\torchgpu\lib\site-packages\torch\utils\data\_utils\collate.py in default_collate(batch)
     41             storage = batch[0].storage()._new_shared(numel)
     42             out = batch[0].new(storage)
---> 43         return torch.stack(batch, 0, out=out)
     44     elif elem_type.__module__ == 'numpy' and elem_type.__name__ != 'str_' \
     45             and elem_type.__name__ != 'string_':

RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 321 and 481 in dimension 2 at ..\aten\src\TH/generic/THTensor.cpp:711

C:\Anaconda3\envs\torchgpu\lib\site packages\ipykernel_launcher.py:77:UserWarning:nn.init.xavier_normal现在被弃用,取而代之的是nn.init.xavier_normal。
C:\Anaconda3\envs\torchgpu\lib\site packages\ipykernel\u launcher.py:78:UserWarning:nn.init.constant现在被弃用,取而代之的是nn.init.constant。
---------------------------------------------------------------------------
运行时错误回溯(上次最近调用)
在里面
5 optimizer=optim.SGD(model.parameters(),lr=0.001)
6对于范围内的历元(历元):
---->7对于i,枚举中的批处理(加载器):
8打印(批)
C:\Anaconda3\envs\torchgpu\lib\site packages\torch\utils\data\dataloader.py in\uuuuuuuu next\uuuuuu(self)
558如果self.num_workers==0:#相同的进程加载
559索引=下一个(self.sample#iter)#可能引发停止迭代
-->560 batch=self.collate\u fn([self.dataset[i]表示索引中的i])
561如果self.pin_内存:
562批=_utils.pin_memory.pin_memory_批(批)
C:\Anaconda3\envs\torchgpu\lib\site packages\torch\utils\data\\u utils\collate.py默认值为\u collate(批处理)
66 elif isinstance(批次[0],容器顺序):
67转置=压缩(*批次)
--->68返回[对于转置中的样本,默认进行校对(样本)]
69
70 raise TypeError((错误消息格式(类型[0]))
C:\Anaconda3\envs\torchgpu\lib\site packages\torch\utils\data\u utils\collate.py in(.0)
66 elif isinstance(批次[0],容器顺序):
67转置=压缩(*批次)
--->68返回[对于转置中的样本,默认进行校对(样本)]
69
70 raise TypeError((错误消息格式(类型[0]))
C:\Anaconda3\envs\torchgpu\lib\site packages\torch\utils\data\\u utils\collate.py默认值为\u collate(批处理)
66 elif isinstance(批次[0],容器顺序):
67转置=压缩(*批次)
--->68返回[对于转置中的样本,默认进行校对(样本)]
69
70 raise TypeError((错误消息格式(类型[0]))
C:\Anaconda3\envs\torchgpu\lib\site packages\torch\utils\data\u utils\collate.py in(.0)
66 elif isinstance(批次[0],容器顺序):
67转置=压缩(*批次)
--->68返回[对于转置中的样本,默认进行校对(样本)]
69
70 raise TypeError((错误消息格式(类型[0]))
C:\Anaconda3\envs\torchgpu\lib\site packages\torch\utils\data\\u utils\collate.py默认值为\u collate(批处理)
41存储=批处理[0]。存储()
42 out=批处理[0]。新建(存储)
--->43返回火炬堆(批次,0,输出=输出)
44 elif元素类型。元素模块=和元素类型。元素名称str_'\
45和元素类型字符串“:
RuntimeError:参数0无效:除维度0外,张量的大小必须匹配。在..\aten\src\TH/generic/THTensor.cpp:711处获得维度2中的321和481