如何在不再需要时从内存中释放张量?

时间:2017-03-06 17:05:08

标签: tensorflow

我有假设图,其中有一系列计算如下:

a_0 = tf.placeholder()
a_1 = some_op_1(a_0)
a_2 = some_op_2(a_1)
a_3 = some_op_3(a_2)

在计算a_3时观察到;不需要a_0a_1,因此可以在为a_3分配内存之前将其丢弃。有没有办法让TensorFlow执行这种内存优化(同意有一些时间成本)?

请注意,这与仅在需要时分配内存的this问题不同。

编辑:此网络不会受到培训,因此不要担心反向支持。

1 个答案:

答案 0 :(得分:1)

TensorFlow使用引用计数一旦不再使用就释放张量使用的内存。一旦没有对它们的更多引用,a_0a_1的值将被删除,并且在TensorFlow的最新版本中(1.0之后的每晚版本),某些操作甚至会重用输入缓冲区对于输出,如果它们具有相同的形状和元素类型。