这是我的示例代码:
N = 3000
with tf.variable_scope("scope") as scope:
A = tf.Variable(np.random.randn(N,N), dtype=tf.float32, name='A')
sess = tf.Session()
for _ in range(100):
sess.run(tf.global_variables_initializer())
运行代码会在我的计算机上分配> 10GB的内存。我想多次重新训练我的模型,而不必每次都将整个图重置为默认图。我错过了什么?
谢谢!
答案 0 :(得分:2)
我发现了问题。对于将来遇到同样问题的其他人:问题似乎是每次在循环中创建一个新的初始化操作。我的解决方案是重用初始化操作。这可以修复内存泄漏问题。对我来说:
N = 3000
tf.reset_default_graph()
with tf.variable_scope("scope") as scope:
A = tf.Variable(np.random.randn(N,N), dtype=tf.float32, name='A')
varlist = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope="scope")
init = tf.variables_initializer(varlist) # or tf.global_variables_initializer()
for _ in range(100):
sess = tf.Session()
sess.run(init) # here we reuse the init operation