我正在Python中使用TensorFlow(带有19.01 Nvidia TensorFlow Docker映像)来进行neural style transfer。我有Nvidia 2070显卡,并且在尝试运行TensorFlow docker映像的较新版本(例如19.08)时遇到了内存不足错误。因此,我认为也许是时候考虑使用16位精度而不是32位精度来存储VGG19 CNN的参数了。
我在构建机器时的最初研究使我相信,从32切换到16确实是小菜一碟,但是由于我一直在积极尝试进行过渡,所以这并不是我的经验。
这就是我所做的:
当我运行代码时,nvidia-smi仍然报告说我的GPU基本上已被使用100%。是否有人通过在TensorFlow中切换到float16在减少模型内存占用方面取得了成功?
答案 0 :(得分:1)
TensorFlow具有多种管理混合精度的方法。最合适的混合精度方法取决于您计划使用哪个优化器。例如,Keras优化器有一个API designed to easily port code one way or the other。它称为style
。
如果您使用的是TFv1优化器,或TensorFlow提供的其他非keras优化器之一,则可以使用其graph rewrite function将图的各个部分转换为float16。