複数の出力が一度に1になる可能性がある場合に分類するための損失関数
-
16-10-2019 - |
質問
私の希望の出力は1ホットのエンコードではなく、10 dのベクトルのようです。 [1, 0, 1, 0, 1, 0, 0, 1, 1, 1]
入力は、通常のMnistデータセットのようなものです。
Tensorflowを使用してモデルを構築してこれを学習したい場合は、どの損失関数を選択する必要がありますか?
解決
クラスが相互に展開されていない場合は、例(例の分類剤に見られるソフトマックス関数の代わりに)複数のシグモイド出力を持っています。各出力は、ネットワークがそのクラスのメンバーシップに割り当てる個別の確率になります。
一致する損失関数の場合、Tensorflowでは、組み込みを使用できます tf.nn.sigmoid_cross_entropy_with_logits - 効率のために、ロジット - シグモイド関数への入力 - で動作することに注意してください。リンクは、関連する数学を説明しています。
出力層にもシグモイド関数が必要になります。 入力 シグモイド関数の。これは問題の要件ではありません。シグモイド出力から機能する損失関数を簡単に書き込むことができます。テンソルフローの組み込みだけで、わずかな速度を高めるために異なる方法で書かれています。
所属していません datascience.stackexchange