【问题标题】:maxpooling of channels in CNNCNN中通道的最大池化
【发布时间】:2018-03-16 06:03:05
【问题描述】:

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

提前致谢

【问题讨论】:

  • 你现在尝试了什么?
  • 这听起来像是图像处理领域中典型的颜色分离输入。你想做什么典型的面向图像的 CNN 还没有做到?现有模型不处理第一个 CONV 层之后的通道数量;它们实际上只是输入的 3 倍。

标签: deep-learning keras-layer max-pooling


【解决方案1】:

您可以遵循几个选项,对通道求和,获取最大通道,制作标准 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,:,:]。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    • 2017-08-29
    • 2017-12-02
    • 1970-01-01
    • 2017-06-16
    • 2018-02-22
    相关资源
    最近更新 更多