ClassificationだったりReconstructionだたり1つのモデルで2つ以上の出力やLOSS関数を適応したモデルが近年は増えてきました。となると次のような実装が必要になってきます。
・1つのモデルで複数の値を出力したい
・モデルの複数出力に異なるLOSS関数を設けたい
Kerasだと簡単に実装できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
inputs = Input(shape=(128,input_dim,)) ~~中略~~ y = Dense(PREDICT_DIM, input_shape=(hid_dim,))(y) outputs1 = Activation('sigmoid')(y) outputs2 = Activation('softmax')(y) model = Model(inputs=inputs, outputs=[outputs1, outputs2]) model.compile(optimizer=Adam(lr=0.005, beta_1=0.5), loss=(['mean_squared_error', 'mean_squared_error']), loss_weights=([0.7, 0.3]), metrics=['accuracy']) model, history = estimate_model(model, train_x, [train_y, train_x], test_x, [test_y, test_x]) |