meg*_*ger 11 numpy neural-network conv-neural-network keras tensorflow
标准是float32,但我想知道在什么条件下可以使用float16?
我比较了使用两种数据类型运行相同的covnet,并没有发现任何问题.对于大型数据集,我更喜欢float16,因为我可以更少担心内存问题.
令人惊讶的是,使用16位是完全可以的,甚至不仅仅是为了好玩,而且在生产中也是如此.例如,在这段视频中, Jeff Dean 在52:00左右谈论了谷歌的16位计算.幻灯片引用:
神经网络训练非常容忍精度降低
由于GPU内存是ML计算的主要瓶颈,因此对精度降低进行了大量研究.例如
Gupta在论文 "有限数值精度的深度学习"中关于固定(非浮动)16位训练但具有随机舍入.
Courbariaux在 "使用低精度乘法训练深度神经网络"中关于10位激活和12位参数更新.
这不是限制.Courbariaux等,"BinaryNet:训练深度神经网络,权重和激活约束为+1或-1".在这里,他们讨论了1位激活和权重(虽然梯度的精度更高),这使得前向传递超快.
当然,我可以想象一些网络可能需要高精度的训练,但我建议至少尝试16位用于训练大型网络,如果它被证明工作更糟,则切换到32位.
| 归档时间: |
|
| 查看次数: |
6141 次 |
| 最近记录: |