对单张图片进行卷积池化遇到的小问题

在写一个评价指标时需要对图片进行卷积操作,遇到了很多问题,在此做个记录
问题一:RuntimeError: Given input size: (400x600x3). Calculated output size: (400x150x0). Output size is too small。
问题原因
先采用opencv读取了图片数据,但cv读取的图片数据是【n,h,w,c】格式,即通道数是最后一维。但是torch处理时图片一般是【n,c,h,w】个人感觉后者更符合直觉。因此当采用的卷积核尺度大于c通道数以后就会报错,输出为0维度(尺度太小,放不下一个卷积核)
问题解决
在利用opencv读取图片数据后进行利用transpose函数维度修改,这里由于是单张图片因此没有n,只有【c,h,w】。transpose的作用就是可以改变数组的维度位置,如下代码(2,0,1)就是说,新的imgtem第0维度是原来的第2维度,第1维度是原来的第0维度,第2维度是原来的第1维度,这样就满足了torch处理格式。

imgtem=cv2.imread(path + filename)
###########注意cv读取的图片格式是【n,h,w,c】,而pytorch则是【n,c,h,w】后者也更符合直觉
imgtem = imgtem.transpose(2, 0, 1)

问题二:“max_pool2d” not implemented for ‘Byte’
问题原因:由于利用opencv读取图片因此需要将numpy格式转化为tensor格式,利用了from_array函数,该函数是浅拷贝,新数据与原数据格式相同,而orch.from_numpy默认为torch.uint8,
问题解决:转换为FloatTensor类型(或者其他)就好。

 img1=torch.from_numpy(img)//报错代码
 img1=torch.from_numpy(img).float()//正确代码
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天写点代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值