qq_43178462 2023-03-28 14:55 采纳率: 37.5%
浏览 46
已结题

pytorch自制数据集用于分类实验问题

本人自制数据集用于分类实验,使用的是pytorch,生成的数据如下:

X_train_tensor.shape = torch.Size([12601, 32, 32])
Y_train_tensor.shape = torch.Size([12601])

使用网上的方法将数据转为Dataset和DataLoader:

train_dataset = TensorDataset(X_train,Y_train)
test_dataset = TensorDataset(x_test,y_test)

train_loader = torch.utils.data.DataLoader(dataset = train_dataset, shuffle = True)
test_loader = torch.utils.data.DataLoader(dataset = test_dataset, shuffle = True)

在实际分类实验中,一直遇到类似错误:

RuntimeError: Given groups=1, weight of size [64, 3, 3, 3], expected input[1, 100, 32, 32] to have 3 channels, but got 100 channels instead

请问这种自制数据集应该怎样修改才适合于pytorch搭建的2D神经网络分类实验。

  • 写回答

3条回答 默认 最新

  • 关注

    这个错误是由于Conv2d卷积层的输入通道数和输入数据的通道数不匹配造成的。Conv2d卷积层的输入数据的形状应该是(batch_size, channels, height, width),其中channels指输入数据的通道数。在这个错误中,Conv2d卷积层的输入数据应该有64个通道,但实际输入的数据却有100个通道,因此引发了错误。
    解决这个问题的方法是,检查输入数据的通道数是否正确,确保与Conv2d卷积层的输入通道数匹配。如果输入数据的通道数不正确,可以使用torch.nn.functional.interpolate函数进行插值,将输入数据的通道数调整为正确的值。
    举个例子,假设输入数据的形状为(batch_size, 100, height, width),Conv2d卷积层的输入通道数为64,可以使用如下代码进行插值

    
    import torch.nn.functional as F
    x = F.interpolate(x, size=(height, width), mode='bilinear', align_corners=True)
    x = x[:, :64, :, :]
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月28日
  • 创建了问题 3月28日

悬赏问题

  • ¥15 c#转安卓 java html
  • ¥15 os.listdir文件路径找不到
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777
  • ¥50 医院HIS系统代码、逻辑学习
  • ¥30 docker离线安装mysql报错,如何解决?
  • ¥15 构建工单的总账影响在哪里查询或修改
  • ¥15 三个简单项目写完之后有重赏之后联系我
  • ¥15 python报内存不能read错误