2017-10-18 102 views
0

我只是研究訓練DNN的最佳精度。我知道,爲了推理,即使是壓縮的8位精度也應該可以工作。對於訓練,我們需要更高精度的數字。 深度學習(fp16,fp32或fp64)的最佳精度是多少? 我可能會爲此使用tensorflow-gpu。訓練典型深度神經網絡的最佳精度是多少?

+0

我大部分時間看到的是float32,不知道是否所有的操作都是用float64實現的但是 –

+0

這個問題比如https://github.com/tensorflow/tensorflow/issues/13097 –

回答

0

這取決於您對「最佳」的評估函數:您的焦點訓練時間(精度更低,速度更快),準確性(精度更低,精度更低)還是其他資源?這也取決於模型的複雜性和拓撲結構。

ConvNet(MNIST)在8位浮點數上會很好;訓練速度更快,並且準確度差異(如果有的話)將是微不足道的。如果你轉向更加相互依賴和脆弱的東西(可能是內核飢餓的GNN),那麼你會注意到丟失到8位的準確性會降低。

再次根據您的需要,您可以通過降低到8位浮點數來節省訓練時間,但是可以通過擴大模型(卷積層中的更多內核)少量來恢復一些丟失的精度。

+0

使用8或者16幾乎所有的GPU都不會讓訓練速度更快。 GPU不具備較低精度的處理單元,而是使用相同的32位處理單元。 – BlueSun

+0

@BlueSun:對 - 我錯過了最後一句話。我做了大部分關於CPU的工作。 – Prune

2

在大多數情況下,最佳精度是float32。 float64會使gpu上的執行速度明顯變慢。另一方面,除非你有特斯拉p100 GPU,否則使用float16不會使執行速度更快。