kerasでmultiple outputをしたい

書いてる理由

  • 顔の画像から年齢と性別を判定したい
  • 性別はクラス分類、年齢は回帰
  • 二つのモデルを作るのではなく、1つのモデルで同時に二つ出力したい

やったこと

二つのoutputをもつモデルを作るところまで(途中)

参考

www.st-hakky-blog.com

r2d.info

詳細

https://github.com/ys201810/keras_work/tree/master/src
が作りかけ。

結果

model作成時、model.add(conv2d)とかの方法で指定した入力を入れる方法が不明だったので、
x = conv2d()(x)形式で作っていき、最後の二つを以下のようにしてみた。

output1 = Dense(num_classes, activation='softmax', name='output1')(x)
output2 = Dense(1, activation='sigmoid', name='output2')(x)

今の所、モデルは正常に作成されたことが確認できたけど、正しいか不明。
次は、modelコンパイルを以下のようにしてみて、動作するか確認。

model.compile(optimizer=Adam(lr=0.005, beta_1=0.5), 
              loss=(['categorical_crossentropy', 'mean_squared_error']),
              loss_weights=([0.7, 0.3]),
              metrics=['accuracy'])