1

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

提前致谢

4

1 回答 1

3

您可以遵循一些选项,对通道求和,获取最大通道,将标准 RGB 转换为 B&W 等。

所有这些都可以在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,:,:]

于 2017-10-05T17:32:24.057 回答