我希望我的激活功能选择由N
卷积的M x M
过滤器生成的最大值。此图层会将X
频道图片转换为1频道图片。
怎么做?
首先我写了
classifier.add(Conv2D(3, (5, 5), activation='linear')
classifier.add(MaxPooling2D(pool_size=1, strides=1))
但后来认为它没有返回1通道图像,但返回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),....))