1

CNN ネットワークのチャンネル数を減らす必要があります。入力は 4D オブジェクト (サンプル、行、列、チャンネル) です。チャネル数は 3 で、トレーニング用の出力にはチャネルが 1 つしかありません。とにかく、トレーニング中にチャネル方向に一種の最大プーリングを行うことはありますか?

前もって感謝します

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 に答える