2017-11-13 20 views
1

kerasをPythonで使用してレイヤ間のニューラルネットワークの接続を手動で定義したいと思います。デフォルトでは、ニューロンのすべてのペアが接続されます。私は下の図のように接続する必要があります。私はKerasで行うことができますどのようにレイヤ間のカスタム接続Keras

required architecture

答えて

2

あなたは、機能APIモデルと独立した4つの異なるグループを使用することができます。

from keras.models import Model 
from keras.layers import Dense, Input, Concatenate, Lambda 

inputTensor = Input((8,)) 

まず、我々は4で、この入力を分割するラムダ層を使用することができます。

group1 = Lambda(lambda x: x[:,:2], output_shape=((2,)))(inputTensor) 
group2 = Lambda(lambda x: x[:,2:4], output_shape=((2,)))(inputTensor) 
group3 = Lambda(lambda x: x[:,4:6], output_shape=((2,)))(inputTensor) 
group4 = Lambda(lambda x: x[:,6:], output_shape=((2,)))(inputTensor) 

今、私たちはネットワークに従ってください:

#second layer in your image 
group1 = Dense(1)(group1) 
group2 = Dense(1)(group2) 
group3 = Dense(1)(group3) 
group4 = Dense(1)(group4) 

最後のレイヤーを接続する前に、上の4つのテンソル:

outputTensor = Concatenate()([group1,group2,group3,group4]) 

最後の最後の層:

outputTensor = Dense(2)(outputTensor) 

#create the model: 
model = Model(inputTensor,outputTensor) 

偏見に注意してください。これらのレイヤーに偏りがないようにするには、use_bias=Falseを使用します。


旧答え:後方

申し訳ありませんが、私は答えた初めて後方あなたの画像を見ました。私はこれが完了したためにここに保持しています...

from keras.models import Model 
from keras.layers import Dense, Input, Concatenate 

inputTensor = Input((2,)) 

#four groups of layers, all of them taking the same input tensor 
group1 = Dense(1)(inputTensor) 
group2 = Dense(1)(inputTensor) 
group3 = Dense(1)(inputTensor) 
group4 = Dense(1)(inputTensor) 

#the next layer in each group takes the output of the previous layers 
group1 = Dense(2)(group1) 
group2 = Dense(2)(group2) 
group3 = Dense(2)(group3) 
group4 = Dense(2)(group4) 

#now we join the results in a single tensor again: 
outputTensor = Concatenate()([group1,group2,group3,group4]) 

#create the model: 
model = Model(inputTensor,outputTensor) 
関連する問題