CNN 中通道的最大池化

maxpooling of channels in CNN

我需要减少 CNN 网络中的通道数。我的输入是一个 4D 对象(样本、行、列、通道)。通道数为 3,我的训练输出只有一个通道。无论如何在训练期间在通道方向上进行某种最大池化?

提前致谢

您可以遵循几个选项,对通道求和,取最大通道,进行标准的 RGB 到黑白转换等。

所有这些都可以在 Lambda 层内实现,具有定义的功能:

import keras.backend as K

def channelPool(x):
    return K.sum(x,axis=-1)

    #or
    return K.mean(x,axis=-1)

    #or
    return K.max(x,axis=-1)

    #or 
    return (.21*x[:,:,:,:1]) + (0.72*x[:,:,:,1:2]) + (0.07*x[:,:,:,-1:])

图层将是:

Lambda(channelPool, output_shape=optionalInTensorflow)

PS:如果您使用 "channels_first",坐标轴将为 1,转换将采用 x[:,channel,:,:]