組み込みケラス損失関数を定数で記号的に掛けることは可能ですか?たとえば、2つの出力の損失の線形結合が必要な場合。ケラス損失関数を定数で掛ける
私は独自の損失関数を書くことができましたが、それはPythonコードであり、記号的なKerasではなくコンパイルされませんか?私は純粋なケラス(またはTF)でそれを行う方法を探しています
組み込みケラス損失関数を定数で記号的に掛けることは可能ですか?たとえば、2つの出力の損失の線形結合が必要な場合。ケラス損失関数を定数で掛ける
私は独自の損失関数を書くことができましたが、それはPythonコードであり、記号的なKerasではなくコンパイルされませんか?私は純粋なケラス(またはTF)でそれを行う方法を探しています
モデルに複数の出力がある場合は、モデルのloss
引数にKeras lossesのリストを指定すると、出力ごとに損失関数を割り当てることができますcompile
方法。
model.compile(
optimizer='rmsprop',
loss=['binary_crossentropy', 'mean_squared_error'],
loss_weights=[1., 0.2]
)
これは出力output_a
にバイナリクロスエントロピー損失を割り当てることになり、平均はにエラー損失を乗:これは次のようにたとえば、あなたのモデルは、フォーム
model = Model(inputs=[input_a, input_b], outputs=[output_a, output_b])
である場合は、それをコンパイルすることができますoutput_b
。最小化される損失は、loss_weights
で指定された重みで、これらの損失の加重和になります。
また、出力レイヤーに名前が付いている場合は、出力レイヤー名をキーとしてdictsを指定してloss
とloss_weights
を指定することもできます。これにより、どの出力にどの損失や重みが割り当てられているのかのあいまいさを取り除くのに役立ちます。
詳細については、https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-modelsを参照してください。
はい、絶対に可能です。しかし、あなたが達成したいものに応じて、これについては複数の方法があります。おそらくあなたの質問を詳述できますか?モデルで2つの出力が得られた場合、損失のリストを提供し、必要に応じて加重を提供することができます。 'loss_weights = [1.。、0.2]'。詳細については、https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-modelsを参照してください。 – tiao
ありがとう!私はコンパイル()の議論のリストでそれを見つけることができなかったので、私はそれがそこになかったと仮定しました! – Akababa
あなたは大歓迎です!私は以下の完全な答えとして私のコメントを追加しました。あなたの質問に満足に答えた場合は、受け入れてください:) – tiao