2017-07-25 7 views
-1

私はCNNモデルで作業しており、Denseレイヤーの前に新しいカテゴリ機能を追加したいと考えています。私はCNN層の平坦な出力にフィーチャを連結しようとしましたが、Kerasの連結機能にはテンソルの入力が必要であり、配列の入力は不要です。それについてどうすればいいですか?ここで私はこれまで試してみましたコードです:Kerasの高密度レイヤの前にカテゴリフィーチャを追加しますか?

model = Sequential() 
model.add(Conv2D(128, (6, 6), padding='same')) 
model.add(Activation('relu')) 
model.add(Conv2D(128, (6, 6))) 
model.add(Activation('relu')) 
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dropout(0.25)) 
model.add(Flatten()) 

私は連結し機能を使用しようとしていますが、それは私の機能は、形状のnumpyの配列であるようテンソル、参加することができます(1、3)。どんな助けもありがとう。

+3

へようこそSO。他の人があなたを手伝うことができるようにするには、「最小限で完全で検証可能なサンプルの作成方法」を参照してください。 – desertnaut

答えて

1

実際のモデルの側面に新しいモデルを作成する必要があります。 この2番目のモデルはnumpyの配列を入力し、それ以外は何もしません。

次に、それらを連結します。このよう

- >

m1 = Sequential() 
m1.add(Conv2D(128, (6, 6), padding='same')) 
m1.add(Activation('relu')) 
m1.add(Conv2D(128, (6, 6))) 
m1.add(Activation('relu')) 
m1.add(MaxPooling2D(pool_size=(2, 2))) 
m1.add(Dropout(0.25)) 
m1.add(Flatten()) 

m2 = Sequential() 
m2.add(Input()) # Put needed infos to input your numpy array 
#Don't forget to flatten it if needed ? 

model = Sequential() 
model.add(Merge([m1,m2], mode='concat')) 
#Then add your final layer. 
#To train it, in place of the normal var X_train, you'll use [X_train,yournumpyarray] in model.train method 
+0

ありがとうございます@Pusheen。私は実際に連結プロセス(これはテンソルのみを連結する)で混乱し、Input関数が配列をテンソルに変更することを認識しませんでした。 – Nib

+0

問題はありません。何度か前に同様の問題がありました。 あなたには大丈夫なら答えを受け入れることをためらうことはありません:) –

関連する問題