標準是FLOAT32但我在什麼條件下是確定使用float16疑惑?float16 VS FLOAT32卷積神經網絡
我一直運行比較兩者的數據類型相同covnet,並沒有發現任何問題。對於大型數據集,我更喜歡float16,因爲我可以少擔心內存問題..
標準是FLOAT32但我在什麼條件下是確定使用float16疑惑?float16 VS FLOAT32卷積神經網絡
我一直運行比較兩者的數據類型相同covnet,並沒有發現任何問題。對於大型數據集,我更喜歡float16,因爲我可以少擔心內存問題..
出人意料的是,這是完全正常使用16位,甚至不只是爲了好玩,但在生產中也是如此。例如,在this video傑夫院長談到16位計算在谷歌,周圍52:00。從滑梯的報價:
神經網絡訓練非常寬容的精度降低
由於GPU內存是ML計算的主要瓶頸,出現了精密減少了大量的研究。例如。
Gupta at al paper 「深度學習與有限數值精度」 關於固定(不浮動)16位訓練,但與隨機四捨五入。
Courbariaux at al約10位激活和12位參數更新「精度低乘法訓練深層神經網絡」。
而且這還不是極限。 Courbariaux et al,「BinaryNet:訓練具有約束爲+1或-1的權重和激活的深度神經網絡」。在這裏,他們討論1位激活和權重(雖然梯度更高的精度),這使得正向傳遞超快。
當然,我可以想像一些網絡可能需要高精度的訓練,但我會建議至少嘗試16位訓練一個大的網絡,並切換到32位,如果它被證明工作雪上加霜。
根據這一研究:
隨機古普塔,S.,阿格拉瓦爾,A.,戈帕拉克里希南,K.,&納拉亞南,P。(2015年, 6月)。深度學習的數值精度有限。在 國際機器學習會議(pp。1737-1746)。於: https://arxiv.org/pdf/1502.02551.pdf
被要求使用舍入的半浮點精度(float16)時獲得收斂;然而,當使用這種舍入技術時,他們聲稱取得了非常好的結果。
下面是該文件相關報價:(Chen等,2014)
「最近的工作提出了對於採用 定點計算單元深層神經網絡訓練硬件加速器 ,但發現它對 使用32位定點表示來實現收斂 ,同時在MNIST數據集上訓練卷積神經網絡 。相比之下,我們的結果顯示 有可能訓練這些網絡只使用16位 fixed-只要使用隨機舍入 杜裏ng定點計算「。
以供參考,在這裏是在人的引文陳2014:
陳,Y.,羅,T.,劉,S.,張,S.,他,L.,王,J.,... & Temam, O.(2014年12月)。 Dadiannao:機器學習超級計算機。在 第47屆年度IEEE/ACM國際研討會 微體系結構(第609-622)。 IEEE計算機協會。在: http://ieeexplore.ieee.org/document/7011421/?part=1
隨着float16,你可能會有更多的消失漸變問題。並且,如果您的漸變過低,那麼應該不同的漸變可能會相同。 –