【问题标题】:How to implement custom filters when training a CNN model?训练 CNN 模型时如何实现自定义过滤器?
【发布时间】:2020-10-01 03:12:54
【问题描述】:

我正在制作一个 CNN 模型,并希望通过在图像上应用自定义过滤器来处理图像,然后再将它们输入原始 CNN。知道如何实现吗? 我已经尝试了以下链接中提到的方法,但它引发了“断言错误”! How to include a custom filter in a Keras based CNN?

【问题讨论】:

    标签: python image-processing keras conv-neural-network


    【解决方案1】:

    Assertion Error 的这个问题通常发生在处理的输出维度数与原始 CNN 的输入维度数不匹配时。

    确保上述链接中生成的输出尺寸与原始 CNN 的尺寸相同。

    那么它应该可以工作了!希望对你有帮助:)

    【讨论】:

    • 您好,谢谢您的回答。我无法弄清楚尺寸不正确的地方。以下是我的代码。 def my_filter(shape, dtype=None): f = np.array([ [[[-1]], [[2]], [[-2]], [[2]], [[-1]]], [[[2]], [[-6]], [[8]], [[-6]], [[2]]], [[[-2]], [[8]], [[-12]],[[8]], [[-2]]], [[[2]], [[-6]], [[8]],[[-6]], [[2]]], [[[-1]], [[2]], [[-2]],[[2]], [[-1]]], ]) assert f.shape == shape return K.variable(f, dtype='float32') def build_model(): input_tensor = Input(shape=(256,256,3))
    • model = layers.Conv2D(filters=1, kernel_size = 5, kernel_initializer=my_filter, strides=2, padding='same') (input_tensor) return model
    • 您能否提供错误以及显示错误的位置?
    • 错误在模型定义中。 model = layers.Conv2D(filters=1, kernel_size = 5, kernel_initializer=my_filter, strides=2, padding='valid') (input_tensor)
    • 这里抛出错误是因为f.shape 不等于shape 作为参数传递给my_filter 函数。您需要使这 2 个形状相同,否则它将不起作用。
    猜你喜欢
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    相关资源
    最近更新 更多