我有一个假设的图,它有一系列计算,如下:
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_0
和 a_1
,因此可以在为 a_3
分配内存之前将其丢弃。有没有办法让 TensorFlow 执行这种内存优化(同意有一些时间成本)?
请注意,这与this不同。关于仅在需要时分配内存的问题。
编辑:该网络不会被训练,所以不用担心反向传播。
最佳答案
TensorFlow 使用引用计数来释放张量不再使用的内存。一旦不再引用 a_0
和 a_1
的值,它们就会被删除,并且在 TensorFlow 的最新版本(1.0 之后的每夜版本)中,一些操作如果它们具有相同的形状和元素类型,甚至会重用输入缓冲区作为输出。
关于tensorflow - 当不再需要时如何从内存中释放张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42631417/