2017-05-02 14 views
0

私は、Guptaなどの論文「自然画像のテキストローカライゼーションのための合成データ」を実装し始めました。私は重大な問題に遭遇しました。TensorFlowの完全畳み込みネットワークで損失を実装する方法は?

ネットワークアーキテクチャは完全畳み込みネットワークです。最終的な層は基本的にNxNx7テンソル(各セルが7つの値を保持する行列を想像してください)です。各セルはPとCの値を保持します。 Pは、回帰すべき境界ボックスに関する6つのパラメータであり、Cは信頼度である。

今、私はこのレイヤーで二乗損失を実装したいと思います。紙の状態は最終層の各セルが予測であるため、予測子の位置に境界ボックスを含める必要がある場合は、その予測子(またはセル)のすべてのパラメータに損失を適用する必要があります。バウンディングボックスを含んではならない場合は、信頼度Cを回帰するだけで十分です。

私はTensorFlowで別々の損失を動的に定義する必要がありますが、どうすればできますか?

申し訳ありませんが、私が正しくあなたの問題を理解していない:

答えて

0

あなたがtf.condを使用し、

loss = tf.cond(is_there_sthg_label, lambda: tf.add(loss1, loss2), lambda: loss2) 

EDITのようなものを書くことができます。バウンディングボックスがある場合は[i, j]に値NxNのマスクを(実行時に)Trueに設定し、それ以外の場合はfalseにすることができます。あなたは、各セルのために、両方のあなたの損失を計算し、あなたは形状NxNのテンソルloss1loss2を取得し、その後、

#loss1 is the loss on the confidence only, loss2 is the loss on P 
loss_tensor = loss1 + tf.multiply(loss2, tf.cast(mask, loss2.dtype)) 
total_loss = reduce_sum(loss_tensor) 

(あなたはもちろんのバッチを持っている場合、これはまだ動作します)

+0

私は繰り返しこれを行うことができますか?出力レイヤーのすべてのセルを取り出し、そのセルの損失を決定すること。 – alexovits

+0

@alexovits私は投稿を編集しました – gdelab

+1

私はできるだけ早く試してみます。ありがとう、これは非常に有望に見えます。 TFが時にはどのように文書化されていないのかはちょっと狂っています。 – alexovits

関連する問題