私はケラスで最初のアンサンブルモデルを作成しようとしています。私は私のデータセットに3つの入力値と1つの出力値を持っています。kerasシーケンシャルモデルを同じ入力とマージするにはどうすればいいですか?
from keras.optimizers import SGD,Adam
from keras.layers import Dense,Merge
from keras.models import Sequential
model1 = Sequential()
model1.add(Dense(3, input_dim=3, activation='relu'))
model1.add(Dense(2, activation='relu'))
model1.add(Dense(2, activation='tanh'))
model1.compile(loss='mse', optimizer='Adam', metrics=['accuracy'])
model2 = Sequential()
model2.add(Dense(3, input_dim=3, activation='linear'))
model2.add(Dense(4, activation='tanh'))
model2.add(Dense(3, activation='tanh'))
model2.compile(loss='mse', optimizer='SGD', metrics=['accuracy'])
model3 = Sequential()
model3.add(Merge([model1, model2], mode = 'concat'))
model3.add(Dense(1, activation='sigmoid'))
model3.compile(loss='binary_crossentropy', optimizer='Adam', metrics=['accuracy'])
model3.input_shape
アンサンブルモデル(MODEL3)がエラーなしでコンパイルが、モデルをフィッティングしながら私は、同じ入力を2回model3.fit([X,X],y)
を通過しなければなりません。これは不必要なステップだと思います。入力を2回繰り返すのではなく、アンサンブルモデルに共通の入力ノードが必要です。どうしたらいいですか?
モデルのコンパイル(オプティマイザとロス)は、その特定のものに** fitを使用した場合にのみ考慮されます(テストされていません)モデル**。 'model3' **に** fitを使用している場合、' model3'のコンパイルだけが有効になります。 --- 'model1'と' model2'をコンパイルする必要はありません。( 'model1.fit'と' model2.fit'を使って)それらを別々に訓練する場合を除きます。重みと予測は 'compile'を必要としません。 –