2017-10-18 10 views
0

私はDNNをトレーニングするための最適精度を研究しています。 私は推論のために、圧縮された8ビットの精度さえも機能するはずであることを知りました。トレーニングのためには、より高い精度の数値が必要です。 ディープラーニング(fp16、fp32、またはfp64)の最適精度はどのようになりますか? 私はこの目的のためにtensorflow-gpuを使用するかもしれません。典型的なディープニューラルネットワークをトレーニングするための最適精度はどれくらいですか?

+0

私がほとんど見たことは、すべての操作がfloat64で実装されているかどうかわからないfloat32です。 –

+0

この問題は、たとえばhttps://github.com/tensorflow/tensorflow/issues/13097 –

答えて

0

これは、最適化のための評価関数によって異なります。フォーカストレーニングの時間精度(精度の低下が少ない)、精度(精度の精度が劣る場合があります)、その他のリソースですか?これは、モデルの複雑さとトポロジにも多少依存します。

ConvNet(MNIST)は8ビット浮動小数点数で問題ありません。訓練はより速く、正確さの差(もしあれば)は重要ではない。より相互依存性があり、脆弱なもの(おそらくカーネルが枯渇したGNN)に移行すると、8ビットに落とす際の精度が低下することに気付くでしょう。

また、必要に応じて、8ビット浮動小数点数に落とすことでトレーニング時間を節約できますが、モデルを広げ(畳み込みレイヤーのカーネルを増やす)、わずかな誤差を回復します。

+0

8または16ほとんどすべてのGPUでビット浮動小数点演算を使用すると、トレーニングが高速になるわけではありません。 GPUは、より低い精度の処理ユニットを欠いており、代わりに同じ32ビット処理ユニットを使用する。 – BlueSun

+0

@BlueSun:right - 私はその最後のフレーズを逃しました。私はCPUで自分の仕事のほとんどを行います。 – Prune

2

ほとんどの場合、最適精度はfloat32です。 float64はgpuでの実行を大幅に遅くします。一方、tesla p100 GPUを使用していない限り、float16を使用しても実行速度は向上しません。

関連する問題