你好,
我试图在我的Nvidia Jetson上使用YOLO的DarkFlow实现(它使用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)
这是它在没有任何进一步消息的情况下“杀死”训练之前输出的最后一行。因为这是一个复杂的神经网络,我认为原因是内存消耗过大。现在我只能使用这个GPU在我的Jetson所以,谁有建议如何降低它或如何解决问题,否则?
谢谢你提前给我答案!
发布于 2020-03-08 01:09:47
您可以尝试将batch_size
降低到1,并降低width,height
值,但不建议进行jetson nano
培训。其有限的功能(4GB的共享内存)阻碍了学习过程。为了克服这些限制,您可以尝试使用这 post或这 one来增加用作RAM的swap_area
,但我还是建议只使用nano进行推断。
EDIT1:众所周知,Tensorflow
倾向于分配所有可用的内存,这使得进程被OS杀死。要解决这个问题,可以使用tf.GPUOptions
限制Tensorflow
的内存使用。
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
分配的内存超过可用资源的一半(也因为它是共享的)。
祝你好运。
https://stackoverflow.com/questions/60382007
复制