我目前正在创建没有可训练参数的自定义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