【问题标题】:keras backend conv2d errorkeras后端conv2d错误
【发布时间】:2018-04-21 21:31:51
【问题描述】:

我正在尝试将keras.backend.conv2d 函数与我自己的内核一起使用,但出现以下错误。

img = data[0,:,0]
img = img.reshape(240, 320)

kernelX = np.array([[-1, 1], 
                    [-1, 1]])

img = K.constant(img)
kernelX = K.constant(kernelX)

I_x = K.conv2d(img, kernelX)

ValueError: 输入通道数不匹配对应 过滤器尺寸,320 != 2

有人可以把我推向正确的方向吗?

【问题讨论】:

    标签: python keras convolution


    【解决方案1】:

    虽然您没有指定使用哪个后端,但由于您的整形操作会引发错误。在这种情况下,keras 将形状的最后一个元素解释为通道数。这意味着,它假设您的图像有 240 个像素和 320 个通道,而您的内核有两个通道。不过,对于卷积,它们的大小必须相同。

    因此,您应该以某种方式创建图像和内核,以使您的图像具有 (240, 320, 1) 形状,并且您的内核具有 (2, 2, 1) 形状。

    【讨论】:

    • 感谢您的建议。我将两者的尺寸都扩展为 (2, 2, 1) 和 (240, 320, 1) 并进行了尝试。现在错误显示“输入通道数与过滤器的相应维度不匹配,1!= 2”。我已经仔细检查并检查了图像和内核的尺寸。 (顺便说一句,我正在使用 Tensorflow 后端)。
    • 来自文档linkGiven an input tensor of shape [batch, in_height, in_width, in_channels] and a filter / kernel tensor of shape [filter_height, filter_width, in_channels, out_channels], this op performs the following: ...。您可以尝试相应地调整张量并报告结果。
    猜你喜欢
    • 2019-01-11
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2021-02-16
    • 2018-08-31
    相关资源
    最近更新 更多