顕微鏡画像で細胞小器官をセグメント化するために、Keras で実装された U-Net ( https://arxiv.org/pdf/1505.04597.pdf ) を使用しています。ネットワークが 1 ピクセルだけ離れた複数の単一オブジェクトを認識できるようにするために、各ラベル イメージにウェイト マップを使用したいと考えています (式は出版物に記載されています)。
私の知る限り、これらの重みマップを利用するには、独自のカスタム損失関数 (私の場合はクロスエントロピー) を作成する必要があります。ただし、カスタム損失関数は 2 つのパラメーターしか取りません。このような関数にウェイト マップの値を追加するにはどうすればよいですか?
以下は、私のカスタム損失関数のコードです。
def pixelwise_crossentropy(self, ytrue, ypred):
ypred /= tf.reduce_sum(ypred, axis=len(ypred.get_shape()) - 1, keep_dims=True)
# manual computation of crossentropy
_epsilon = tf.convert_to_tensor(epsilon, ypred.dtype.base_dtype)
output = tf.clip_by_value(ypred, _epsilon, 1. - _epsilon)
return - tf.reduce_sum(ytrue * tf.log(output))
ウェイト マップ値を ytrue テンソルのラベル値と組み合わせる方法はありますか?
私が言ったように、この質問がばかげているように見える場合は申し訳ありませんが、私はゲームに比較的慣れていません。どんな助けや提案も大歓迎です!