我需要减少CNN网络中的频道数量。我的输入是一个4D对象(样本,行,列,通道)。通道数为3,我的训练输出只有一个通道。无论如何,在训练期间是否在通道方向上进行最大限度的聚集?
提前致谢
答案 0 :(得分:1)
您可以按照以下几个选项,对频道求和,选择最大频道,制作标准RGB到B& W trasform等。
所有这些都在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,:,:]
。