【问题标题】:Cropping layer in my keras model has zero dimensions我的 keras 模型中的裁剪层的维度为零
【发布时间】:2019-02-15 20:43:34
【问题描述】:

我用 keras 创建了简单的模型来理解裁剪层

def other_model():
    x = keras.Input(shape = (64,64,3))
    conv = keras.layers.Conv2D(5, 2)(x)
    crop = keras.layers.Cropping2D(cropping = 32)(conv)
    model = keras.Model(x,crop)
    model.summary()

    return model

但我得到以下摘要


层(类型)输出形状参数#

input_12 (InputLayer) (None, 64, 64, 3) 0


conv2d_21 (Conv2D) (无, 63, 63, 5) 65


cropping2d_13 (Cropping2D) (无, 0, 0, 5) 0

总参数:65 可训练参数:65 不可训练参数:0


为什么 Cropping2D 的第 1 维和第 2 维都为零? 他们应该是 32 岁

【问题讨论】:

  • 好的。实现它的一种方法是在裁剪层定义中使用 2 个元组:cropping = keras.layers.Cropping2D(cropping = ((15,32),(15,32)))(conv)。但我只想为此使用一个整数
  • 但我仍然无法获得 32x32 尺寸,我只能获得更小的尺寸
  • 如果您选择cropping = (a,b),那么您的图像将被左右两侧的a 值和顶部和底部的b 值截断。 2a 和 2b 总结

标签: neural-network conv-neural-network


【解决方案1】:

您只需选择将在图像的每一侧被切断的像素数。我会选择它大于或等于图像的一半大小,所以它不起作用

【讨论】:

    【解决方案2】:

    文档中有点不清楚,但如果您将单个整数值 (cropping=32) 作为参数,它会在图像的 每一 侧裁掉 32 个像素。

    如果您有一张 64x64 像素且裁剪 = 32 的图像,则目标尺寸将为 0x0 像素...

    如果你想有一个32x32像素的目标尺寸,你必须给cropping=16

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      相关资源
      最近更新 更多