gpt4 book ai didi

python - 如何从内存中手动删除张量?

转载 作者:行者123 更新时间:2023-11-28 17:06:28 25 4
gpt4 key购买 nike

我在 tensorflow 如何处理内存方面遇到了一些问题。在这个玩具示例的每次迭代后,我想从我的内存中删除张量。

我正在使用 tensorflow EagerExecution。我尝试过使用变量和简单的张量。 tf.assign 不做这项工作。使用的内存越来越多。我想这是正常的,以便能够计算梯度。即使我在每次迭代结束时应用一些虚拟优化器,内存也不会被释放(更准确地说,它有时会发生,但全局趋势是内存使用量正在增长)。

那么可以手动删除吗?

import tensorflow as tf
import tensorflow.contrib.eager as tfe
import numpy as np
import time as ti


tf.enable_eager_execution()

for i in range(150):
all_subject=tfe.Variable(np.random.rand(200, 500), dtype=tf.float32)
tf.assign(all_subject, np.random.rand(200,500) )
ti.sleep(1.0)
del all_subject
ti.sleep(0.5)

分配情况:

Memory profile

最佳答案

根据 the documentation on eager execution ,

During eager execution the lifetime of state objects is determined by the lifetime of their corresponding Python object.

因此,即使没有明确的 del,您也不应该在代码中观察到任何内存泄漏:将变量重新分配给其他对象这一简单事实应该会释放内存。

但是,事实并非如此,我观察到与您相同的内存泄漏。

所以这可能是一个(严重的)错误,您可以提交 here .

关于python - 如何从内存中手动删除张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com