首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从内存中手动删除张量?

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

Stack Overflow用户
提问于 2018-05-31 12:48:06
回答 1查看 2.4K关注 0票数 3

我对tensorflow如何处理内存有一些困难。在这个玩具示例每次迭代之后,我想从我的记忆中删除张量。

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

那么,是否可以手动删除呢?

代码语言:javascript
复制
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)

分配情况如下:

内存剖面

EN

回答 1

Stack Overflow用户

发布于 2018-05-31 14:34:39

关于急切执行的文档称,

在急切执行期间,状态对象的生存期由它们对应的Python对象的生存期决定。

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

然而,这不是发生的情况,我观察到与您相同的内存泄漏。

因此,这可能是一个(严重的)错误,您可以提交这里

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50624724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档