Tensorflow 内存爆炸
-
问题描述
最近在运行Visual-Reasoning-eXplanation源码时,程序经常在运行一段时间之后被kill掉,查看cpu状态时发现占用很高。一般出现这种情况的原因可能有三种:batch size 过大,图节点的累积。
第一种情况是比较常见也是容易修改的,将batch size减小即可,这里我们主要讨论第二种情况。
在Tensorflow中构造图,实质上是将一些操作作为节点加入图中,在run之前是要构造好一个图的。如果run图中不存在的节点,Tensorflow就会将节点加入图中,随着不断的迭代,造成内存的不断增长,导致内存的不足。 -
解决方案
使用tf.placeholder()
tf.placeholder()函数作为一种占位符用于定义过程,可以理解为形参,在执行的时候再赋具体的值。
不必指定初始值,可在运行时,通过Session.run的函数的feed_dict参数指定。
通过此方法可以减少节点增加引起的内存爆炸。
1072

被折叠的 条评论
为什么被折叠?



