我目前正在创建没有可训练参数的自定义keras图层
此层的输入具有形状(批大小,序列长度,特征)。这基本上与一维全局最大池化层的输入相同。
我正在尝试使用此自定义层,是在不降低尺寸的情况下执行一维全局最大池化。 (只想将每个功能的非最大条目归零)最重要的是,我希望输出具有一个额外的维度,以便可以将其传递到2D卷积层。
因此,此图层的输出应为形状(批大小,序列长度,特征,1)通过将所有不是最大值的零清零来执行一维全局最大池化]
这是图层的骨架
class GlobalMaxPoolZeroOutNonMax(Layer):
def __init__(self, **kwargs):
super(GlobalMaxPoolZeroOutNonMax, self).__init__(**kwargs)
self.input_spec = InputSpec(ndim=3)
self.data_format = K.normalize_data_format('channels_last')
def compute_output_shape(self, input_shape):
return (input_shape[0], input_shape[1], input_shape[2], 1)
def call(self, inputs):
# THIS IS WHERE I NEED HELP to zero out the non max and add a dimension
raise NotImplemented
def get_config(self):
config = {'data_format': self.data_format}
base_config = super(GlobalMaxPoolZeroOutNonMax, self).get_config()
return dict(list(base_config.items()) + list(config.items()))
谢谢您的时间!
我目前正在创建没有可训练参数的自定义keras层,该层的输入具有形状(批处理大小,序列长度,特征)。这基本上是相同的...
您不必使用子类化。您可以使用以下方法实现此目的。您要记住的一件事是,这将保留all