CNN ネットワークのチャンネル数を減らす必要があります。入力は 4D オブジェクト (サンプル、行、列、チャンネル) です。チャネル数は 3 で、トレーニング用の出力にはチャネルが 1 つしかありません。とにかく、トレーニング中にチャネル方向に一種の最大プーリングを行うことはありますか?
前もって感謝します
CNN ネットワークのチャンネル数を減らす必要があります。入力は 4D オブジェクト (サンプル、行、列、チャンネル) です。チャネル数は 3 で、トレーニング用の出力にはチャネルが 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,:,:]
ます。