如何使用maxout激活进行卷积?

时间:2017-07-10 09:58:12

标签: python keras

我希望我的激活功能选择由N卷积的M x M过滤器生成的最大值。此图层会将X频道图片转换为1频道图片。

怎么做?

首先我写了

classifier.add(Conv2D(3, (5, 5), activation='linear')
classifier.add(MaxPooling2D(pool_size=1, strides=1))

但后来认为它没有返回1通道图像,但返回3通道。

如何完成这项工作?

3 个答案:

答案 0 :(得分:2)

因此,要应用此功能,您应该从后端创建Lambda图层和max

from keras import backend as K

if K.image_data_format() == "channels_first":
    channels_axis = 1
else:
    channels_axis = 3

# To apply MaxOut:

classifier.add(Lambda(lambda x: K.max(x, axis=channels_axis, keepdims=True)))

答案 1 :(得分:0)

您可以使用keras.backend.max并为其指定axis参数,以便沿正确的轴取最大值。哪一个取决于你的后端。

答案 2 :(得分:-1)

这不是一个直接的答案,但是,如果你只想让结果为1个通道,你可以创建一个只有一个滤波器的卷积层。您可以在现有卷积之后添加它,或者只是更改现有的卷积。

classifier.add(Conv2D(1, (5,5),....))
相关问题