【发布时间】: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