【问题标题】:RuntimeError: expected input to have 3 channels, but got 4 channels insteadRuntimeError:预期输入有 3 个通道,但得到的是 4 个通道
【发布时间】:2023-01-14 18:20:50
【问题描述】:

我用于测试的医学 PNG 图像有 3 个通道,如下所示:

import cv2
from google.colab.patches import cv2_imshow
img= cv2.imread("a.png")
print('Image Dimensions :', img.shape)
img= cv2.imread("ax2.png")
print('Image Dimensions :', img.shape)

------------------> 结果:<------------------------ ------

Image Dimensions : (625, 698, 3)
Image Dimensions : (426, 535, 3)

众所周知,我的测试图像有 3 个通道,但我得到如下错误,它说图像有 4 个通道

RuntimeError: Given groups=1, weight of size [3, 3, 1, 1], expected input[1, 4, 268, 300] to have 3 channels, but got 4 channels instead

问题是什么,我该如何解决?

谢谢!

【问题讨论】:

  • 你能提供更多关于你使用的网络的信息吗,你是如何加载图像的,等等。
  • 您可以发布导致此错误的代码 sn-p 吗?
  • 首先,我用它的数据集运行一个超分辨率算法,没问题。代码的链接如下:github.com/sanghyun-son/EDSR-PyTorch。 (这段代码的作用是接收一张高分辨率和低分辨率两种模式的图像,对低分辨率图像进行质量改进,最后将改进后的图像与高分辨率图像进行比较,检查改进后的质量。这样做,输入图像是来自同一张照片的两个高分辨率和低分辨率图像。)之后我尝试使用我的 PNG 医学数据集进行测试但出现错误
  • 请问,有可能吗,请查看答案部分?谢谢
  • 我猜你在实际运行网络时不会以相同的方式阅读图像。

标签: python image-processing pytorch medical-imaging


【解决方案1】:

weight of size [3, 3, 1, 1] 表示您的 conv2D 的输入通道大小为 3(列表的第二个条目)。

作为提示:weigth 大小是 [out_channels, in_channels, kernel, kernel]尤林

input[1, 4, 268, 300] 表示您的输入通道大小为 4。但是,它应该是 3。

提示:输入大小为 [N, in_channels, H_in, W_in]

现在,您应该考虑馈入网络的输入的形状是什么。可能是您忘记更改前面提到的格式中的形状(cv2 具有不同的通道顺序 [H, W, in_channels]),您错误地或类似地连接了输入。因此,检查输入形状绝对可以帮助您。

【讨论】:

    猜你喜欢
    • 2021-03-25
    • 2022-12-22
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2021-03-11
    • 2021-04-19
    • 1970-01-01
    相关资源
    最近更新 更多