pytorch遇到的问题1

  • 问题一

RuntimeError:Given groups=1,weight of size[16,3,3,3],expected input[1,384,384,3] to have 3 channels,but got 384 channels instead.

我写的网络的nn.Conv2d(3,16,3,1,padding=1),要求输入通道为3,输出是16,网络对于四个参数的认识是第一位是batch_size,即是读入图片的数量,这里我输入的是1,第二位是输入的通道数,要求是3,但我读取图片时,默认的是行*列*通道数,所以输入到网络中出错了,需要交换通道数和行列的位置,即使之成为通道数*行*列,具体方法为input=numpy.transpose(numpy,(0,3,1,2))。

注意:网络的输入格式是(batch_size,channels,rows,cols)

 

  • 问题二

error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\highgui\src\window_w32.cpp:1227: error:

(-215:Assertion failed) src.channels() == 3 in function 'cvShowImage'

解释:这里出错是由于网络输出的大小是(batch_size,channels,rows,cols);但图像显示是要求(rows,cols,channels),和问题一相似,也需要交换位置。

  • 问题三

图片的定义:out3=numpy.zeros([3,384,384],numpy.float),cv显示不了float64的图像,所以可以定义为out3=numpy.zeros([3,384,384],numpy.float32)或out3=numpy.zeros([3,384,384],numpy.uint8)

out3=out3.astype(numpy.uint8)

  • 问题四:

ValueError: only one element tensors can be converted to Python scalars

源码:out=input.item(),这里出错的原因在于input是一个多维的图像数组,这行代码是对所有的数进行一次变换,但是实际上只允许一对一的变换,所以代码可以变为:

for k in range(out2.shape[0]):
    for i in range(out2.shape[1]):
        for j in range(out2.shape[2]):
            out3[i,j]=out2[i,j].item()*255

 

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值