如何降低 Tensorflow 中的 RAM 消耗?

How to lower RAM consumption in Tensorflow?

你好,

我正在尝试在我的 Nvidia Jetson Nano 上使用 DarkFlow,它是 YOLO 的 Python 实现(使用 Tensorflow 作为后端)来检测物体。我得到了所有的设置和东西,但它不想训练。我将其设置为 GPU 模式,输出中的一行内容如下:

Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 897MB memory) -> physical GPU (device: 0, name: NVIDIA Tegra X1, pci bus id: 0000:00:00.0, compute capability: 5.3)

这是它在训练 "Killed" 没有任何进一步消息之前输出的最后一行。因为它是一个重卷积神经网络,我认为原因是 RAM 过度消耗。现在我只能在我的 Jetson Nano 中使用这个 GPU,所以有人建议如何降低它或如何解决问题吗?

提前感谢您的回答!

您可以尝试将 batch_size 降低到 1 并降低 width,height 值,但不建议在 jetson nano 上进行训练。它的有限功能(4 GB 共享 RAM)阻碍了学习过程。为了克服这些限制,您可以尝试遵循 this post or this 一个来增加 swap_area ,它充当 RAM,但我仍然建议仅使用 nano 进行推理。

EDIT1:另外众所周知,Tensorflow 倾向于尝试分配所有可用的 RAM,这使得进程被 OS 杀死。要解决此问题,您可以使用 tf.GPUOptions 来限制 Tensorflow 的 RAM 使用。 示例:

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.4)
session = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

我们选择 per_process_gpu_memory_fraction 作为 0.4,因为最好不要让 Tensorflow 分配超过可用资源一半的 RAM。(也因为它是共享的)

祝你好运。