pytorch RuntimeError:Tensora(61)的大小必须与TensorB(64)在非单点维度3的大小相匹配

oalqel3c  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(199)

有没有人知道这里的错误是什么?我已经看过其他StackOverflow线程或PyTorch论坛线程,但我没有发现任何东西😕
我的数据集来自https://github.com/skyatmoon/CHoiCe-Dataset。对于标签,我使用图像所在目录的名称。
如果您需要更多的代码/信息,请不要犹豫。

培训方式

def train():
   criterion = nn.MSELoss()
   optimizer = optim.SGD(model.parameters(), lr=0.3, momentum=0.9)

   for epoch in range(3000):
       running_loss = 0
       for images, labels in dataloader:
           optimizer.zero_grad()

           output = model(images)
           loss = criterion(output, labels.view(1, -1))

           loss.backward()
           optimizer.step()
           running_loss += loss.item()

型号

model = nn.Sequential(
    nn.Linear(28, 16),
    nn.Sigmoid(),
    nn.Linear(16, 16),
    nn.Sigmoid(),
    nn.Linear(16, 61)
)

DataLoader

dataloader = DataLoader(
   dataset=dataset,
   batch_size=64,
   shuffle=True,
)
643ylb08

643ylb081#

我认为你也应该分享你创建数据加载器的代码,它看起来很模糊,但是,它看起来像模型的输出维度(...,61)与标签的尺寸不匹配(...,64).你应该检查你从存储库名称创建的标签的数量。你似乎也在给密集的神经网络提供3D输入(nn.线性层)这对于像图像这样的3D数据不是一个好主意。你可以使用Convolutional layers代替。
您还应该检查here中的类似问题。

相关问题