张量流中卷积神经网络的记忆估计

时间:2017-05-31 07:11:30

标签: python-3.x memory tensorflow conv-neural-network

大家好,

我正在研究使用张量流和卷积神经网络的图像分类问题。 我的模型有以下图层。

  • 输入尺寸为2456x2058的图片
  • 3卷积层{Con1-shaped(10,10,1,32); CON2形(5,5,32,64); CON3形(5,5,64,64)}
  • 3 max pool 2x2 layer
  • 1个完全连接的层。

我尝试过使用NVIDIA-SMI工具,但它显示了模型运行时的GPU内存消耗。
我想知道在GPU上运行模型之前是否有任何方法或方法可以找到内存估计值。这样我就可以考虑可用内存来设计模型 我已经尝试过使用这个method for estimation,但我的计算内存和观察到的内存利用率并不相同。

谢谢大家的时间。

3 个答案:

答案 0 :(得分:2)

据我了解,当您使用tensorflow-gpu打开会话时,它会分配GPUS中可用的所有内存。因此,当你查看nvidia-smi输出时,你总会看到相同数量的已用内存,即使它实际上只使用了它的一部分。打开会话时有一些选项可强制tensorflow仅分配可用内存的一部分(例如,请参阅How to prevent tensorflow from allocating the totality of a GPU memory?

答案 1 :(得分:0)

  

NVIDIA-SMI ...向我展示了作为模型运行的GPU内存消耗

TF在您使用它时会预先分配所有可用内存,因此NVIDIA-SMI将显示近100%的内存使用量......

  

但是我的计算内存和观察到的内存利用率并不相同。

..所以这并不奇怪。

答案 2 :(得分:0)

您可以在TensorFlow中控制GPU的内存分配。计算出深度学习模型的内存要求后,可以使用tf.GPUOptions

例如,如果要从8 GB中分配4 GB(大约)GPU内存。

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

完成后,使用tf.Session参数

将其传递到config

per_process_gpu_memory_fraction用于绑定可用的GPU内存量。

以下是文档链接: -

https://www.tensorflow.org/tutorials/using_gpu