2017-10-04 14 views
-1

CNNネットワークのチャネル数を減らす必要があります。私の入力は4Dオブジェクト(サンプル、行、列、チャンネル)です。チャンネル数は3で、トレーニングのための私の出力はちょうど1チャンネルです。トレーニング中にチャネル方向に最大のプールを行う方法はありますか?事前にCNNのチャネルのmaxpooling

おかげ

+0

あなたは今まで何をしようとしていますか? – timiTao

+0

これは、画像処理ドメインの典型的な色分け入力のように聞こえます。典型的なイメージ指向のCNNがまだしていないことを何をしようとしていますか?既存のモデルは、最初のCONVレイヤの後のチャネルの量を扱いません。彼らは効果的に入力の3倍です。 – Prune

答えて

0

あなたがそれらのすべてが内側になんとかしているなど、& WのtrasformをBに標準のRGBを行い、最大チャネルを取り、

を、いくつかのオプションをたどるチャンネルを合計することができます定義された機能を有する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,:,:]が使用されます。