RuntimeError: output with shape [1, 256, 256] doesn‘t match the broadcast shape [3, 256, 256]【报错】

解决方法

在dataloader前的dataset函数里,加.convert(‘RGB’),eg:

image = Image.open(image_file).convert('RGB')

解决过程

论文复现过程中尝试将未使用的数据集应用到源代码里,出现如上报错。检查后发现错误出现在dataloader里,考虑是输入图片的问题,通过如下代码判断新加的数据集是灰度图(1.灰度图只有一个通道2.直接查看像素值),因此推断dataloader只接受三通道RGB图,将图片转化为RGB图即可。

打印图片像素值

img_path = '这里写要查看的图像地址'
from PIL import Image
from torchvision import transforms
img = Image.open(img_path)
change = transforms.ToTensor()
img = change(img)
print(img)

查看图片像素值

import cv2
img_path = '这里写要查看的图像地址'
img_c = cv2.imread(img_path,cv2.IMREAD_UNCHANGED)
cv2.imshow('photo',img_c)
key = cv2.waitKey(0)

有博客的解决方案是在transforms.Compose()里加入如下程序段,我的程序并未好转,如果是灰度图,RGB转换与repeat转换的三通道图像是一致的,这可能是程序存在其他的原因。

transforms.Lambda(lambda x: x.repeat(3, 1, 1))

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值