如何在 keras 层中实现 GlobalMinPool2D 函数?
Posted
技术标签:
【中文标题】如何在 keras 层中实现 GlobalMinPool2D 函数?【英文标题】:How to implement GlobalMinPool2D function in keras layers? 【发布时间】:2021-12-19 04:54:22 【问题描述】:keras 层提供keras.layers.GlobalAvgPool2D
和keras.layers.GlobalAvgPool2D
api 来实现全局平均2d 池化和最大池化。但是,Min Pooling 也可能有用,现在我想使用 GlobalMinPool2D,keras 层 api 没有实现。那么如何编写代码来实现 keras 层 GlobalMinPool2D?
【问题讨论】:
请注意min_pool(inputs) == -1 * max_pool(-1 * inputs)
。也就是说,对输入取反取最大值就是取原始输入中的最小值,再取反又恢复原样。
【参考方案1】:
我们可以创建一个自定义层并调用tf.keras.backend.min()
和axis=[1,2]
来执行全局最小池化操作。这类似于GlobalMaxPool2D
中的source。
class GlobalMinPool2D( tf.keras.layers.Layer ):
def call(self , inputs ):
return tf.keras.backend.min( inputs , axis=[ 1 , 2 ] )
我们可以尝试使用类似的张量,
layer = GlobalMinPool2D()
x = np.random.randn( 32 , 128 , 128 , 3 )
print( layer(x).shape )
输出,
(32, 3)
【讨论】:
以上是关于如何在 keras 层中实现 GlobalMinPool2D 函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 keras 层中实现 GlobalMinPool2D 函数?