0
Tensorflowオプティマイザ(特にAdamOptimizer
)は、損失関数を合計として、または平均値/平均値をミニバッチとして定義する際に優先されますか?Tensorflowオプティマイザ:損失合計対平均値
一般的に私の仮定は、損失がミニバッチのサイズに依存しないので、平均を使用することが好ましいということでした。したがって、任意のバッチサイズで動作する学習率を見つける方が簡単です。
しかし、Tensorflowは、 l2_loss
は内部のように:
output = sum(t ** 2)/2
これは、オプティマイザは、内部ですでにバッチサイズを占めていることを意味するものではない、すなわち、彼らは損失がバッチサイズで直線的に拡張することを期待しますか?また、L2ノルムの半分を最適化の観点からとる動機は何ですか?
私は、2で除算すると、グラデーションで1つの乗算を少なくするだけであることがわかります。ですから、明確にするには、非正則化ユースケースの場合、 'tf.reduce_mean(tf.square(output-target))'を使用する方が良いでしょう。 – bluenote10
あなたの損失関数に従っています。ここでは、あなたが実装している損失関数を線形二乗和といいます。それはいつも平均をとるのが良いことです。前のケース12の損失では、グラデーションを取得するときに2つの除算を使用して簡単に行うことができます。 –