读取数据集报错RuntimeError: output with shape [1, 112, 112] doesn‘t match the broadcast shape [3, 112, 112]

博主分享学习笔记,在用PIL的Image.open()读取数据集,用transforms.Compose()将PLI图片转为tensor时出现RuntimeError错误。原因是输入图片需为RGB空间图片,不能是灰度图,导致张量通道数不匹配。解决方法是将图片统一转为RGB。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【学习笔记】

      用PIL的Image.open()读取数据集,明明读取出的图片是(112,112,3)的格式,但是当用transforms.Compose()将PLI图片转为tensor时会提示错误:RuntimeError: output with shape [1, 112, 112] doesn't match the broadcast shape [3, 112, 112]

报错原因:输入图片需要是RGB空间图片而不能是灰度图,所以导致张量的通道数不匹配。

img = Image.open(img_dir) #PIL读入的图像是PIL.Image对象格式
print(img.mode)           #打印图片模式,RGB, L..等,结果发现图片有mode模式为L(灰度图)的

解决方法:将图片统一转为RGB

img = Image.open(img_dir) #PIL读入的图像是PIL.Image对象格式
                           
img = img.convert('RGB')  # 图像形状是HxWxC,如果想使用RGB格式,可以使用convert()函数

参考来源:神经网络报错:RuntimeError: output with shape [1, 128, 128] doesn‘t match the broadcast shape [3, 128, 128]_雨•人的博客-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值