私は、ノイズ除去型オートエンコーダを使用して重み付けしたNNを使用して画像の修復を試みています。すべてがhttps://papers.nips.cc/paper/4686-image-denoising-and-inpainting-with-deep-neural-networks.pdfTensorflow:私の損失関数が巨大な数値を生成する
私は彼らが使用しているカスタム損失機能を作った。
私のセットは、イメージのオーバーラッピングパッチ(196x32x32)のバッチです。私の入力は画像の破損したバッチであり、出力はクリーンなものでなければなりません。私の損失関数の
一部は
dif_y = tf.subtract(y_xi,y_)
dif_norm = tf.norm(dif_y, ord = 'euclidean', axis = (1,2))
どこに再構成しクリーンなイメージとY_(×1×3072 196)は、実際のクリーンなイメージであるy_xi(×1×3072 196)されています。だから私は実際には、破損したバージョンからすべての画像を差し引いて、すべての違いを合計しています。私は非常に大きな数字になるのが普通だと思います。
train_step = tf.train.AdamOptimizer().minimize(loss)
損失の値は約3 * 10^7から始まり、200回の実行(1000回のループ)後に収束します。だから、私の出力イメージはオリジナルから数マイル離れています。
編集:3.02391e + 07から始まり、3.02337e + 07
に収束私の損失値が正しい方法はありますか?もしそうなら、どうすれば劇的に減らすことができますか?
おかげ
編集2:私の損失関数
dif_y = tf.subtract(y,y_)
dif_norm = tf.norm(dif_y, ord = 'euclidean', axis = (1,2))
sqr_norm = tf.square(dif_norm)
prod = tf.multiply(sqr_norm,0.5)
sum_norm2 = tf.reduce_sum(prod,0)
error_1 = tf.divide(sum_norm2,196)
このような損失は、ネットワークがデータ/タスクに適合しないことを意味します。異なるアーキテクチャ(つまり、より深い)が役立つ可能性があります。 –
あなたは損失計算のためのコード行を提供できますか? – Wontonimo
@wontonimo私はコードの行を追加しました – costisst