【问题标题】:How to expand the output of GlobalAveragePooling2D() to be suitable for BiSeNet?如何扩展 GlobalAveragePooling2D() 的输出以适合 BiSeNet?
【发布时间】:2019-04-30 11:05:04
【问题描述】:

我正在尝试在“https://github.com/Blaizzy/BiSeNet-Implementation”处构建如图所示的 BiseNet。

当我想使用 Keras(tf-backend) 中的 GlobalAveragePooling2D() 完成图(b) 中的 Attention Refined Module 时,发现 GlobalAveragePooling2D() 的输出形状不适合下一次卷积。

我在 github 中查看了许多 BiSeNet 代码的实现,但是,它们中的大多数都使用 AveragePooling2D(size=(1,1)) 代替。但是AveragePooling2D(size=(1,1)) 完全没有意义。

所以我定义了一个 lambda 层来做我想做的事(选择的代码如下所示)。 lambda 层可以工作,但看起来很丑:

def samesize_globalAveragePooling2D(inputtensor):
    # inputtensor shape:(?, 28,28,32)
    x = GlobalAveragePooling2D()(inputtensor) # x shape:(?, 32)
    divide = tf.divide(inputtensor, inputtensor)  # divide shape:(?, 28,28,32)
    x2 = x * divide  # x2 shape:(?, 28,28,32)



global_pool = Lambda(function=samesize_globalAveragePooling2D)(conv_0)

希望得到建议,使这个 lambda 更加优雅。

谢谢!

【问题讨论】:

    标签: tensorflow keras python-3.6


    【解决方案1】:

    这可以使用 tf.reduce_mean 上的 lambda 层来完成。

    tf.keras.layers.Lambda(lambda x: tf.reduce_mean(x, axis=[1, 2], keep_dims=True))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      相关资源
      最近更新 更多