Tensorflow:即使关闭会话也会发生内存泄漏?

2024-03-09

当我意识到,即使我在 for 循环中关闭当前会话,我的程序也会大幅减慢,并且由于正在构建的操作而导致内存泄漏,我只是在尝试四元神经网络的一些东西。这是我的代码:

for step in xrange(0,200):#num_epochs * train_size // BATCH_SIZE):
338 
339         with tf.Session() as sess:
340 
341             offset = (BATCH_SIZE) % train_size
342             #print "Offset : %d" % offset
343 
344             batch_data = []
345             batch_labels = []
346             batch_data.append(qtrain[0][offset:(offset + BATCH_SIZE)])
347             batch_labels.append(qtrain_labels[0][offset:(offset + BATCH_SIZE)]
352             retour = sess.run(test, feed_dict={x: batch_data})
357 
358             test2 = feedForwardStep(retour, W_to_output,b_output)
367             #sess.close()

问题似乎来自于test2 = feedForward(..)。我需要在执行后声明这些操作retour一次,因为retour不能是占位符(我需要迭代它)。如果没有这行代码,程序运行得非常好、快并且没有内存泄漏。我不明白为什么 TensorFlow 似乎在试图“拯救”test2即使我关闭会话...


TL;DR:关闭会话并不会释放tf.Graph https://www.tensorflow.org/versions/r0.7/api_docs/python/framework.html#GraphPython 程序中的数据结构,如果循环的每次迭代都会向图中添加节点,则会出现泄漏。

由于你的功能feedForwardStep创建新的 TensorFlow 操作,并在for循环,然后有is代码中的泄漏——尽管很微妙。

除非您另外指定(使用with tf.Graph().as_default(): https://www.tensorflow.org/versions/r0.7/api_docs/python/framework.html#Graph.as_default块),所有 TensorFlow 操作都添加到全局默认图。这意味着每次调用tf.constant(), tf.matmul(), tf.Variable()等将对象添加到全局数据结构中。有两种方法可以避免这种情况:

  1. 构建你的程序,以便你构建一次图表,然后使用tf.placeholder() https://www.tensorflow.org/versions/r0.7/api_docs/python/io_ops.html#placeholder在每次迭代中输入不同值的操作。您在问题中提到这可能是不可能的。

  2. 在每个 for 循环中显式创建一个新图。如果图的结构取决于当前迭代中可用的数据,则这可能是必要的。您可以按如下方式执行此操作:

    for step in xrange(200):
        with tf.Graph().as_default(), tf.Session() as sess:
            # Remainder of loop body goes here.
    

    请注意,在此版本中,您不能使用Tensor or Operation来自上一次迭代的对象。 (例如,从您的代码片段中不清楚test来自。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow:即使关闭会话也会发生内存泄漏? 的相关文章

  • 在 keras 中使用自定义张量流操作

    我在张量流中有一个脚本 其中包含自定义张量流操作 我想将代码移植到 keras 但我不确定如何在 keras 代码中调用自定义操作 我想在 keras 中使用tensorflow 所以到目前为止我发现的教程描述了与我想要的相反的内容 htt
  • 访问 AWS 上的 Tensorboard

    我正在尝试访问 AWS 上的 Tensorboard 这是我的设置 张量板 tensorboard host 0 0 0 0 logdir train 在端口 6006 上启动 TensorBoard b 39 您可以导航到http 172
  • Environment.WorkingSet 错误地报告内存使用情况

    Environment WorkingSet 错误地报告在 Windows 2003 Server 上运行的网站的内存使用情况 操作系统版本 Microsoft Windows NT 5 2 3790 Service Pack 2 NET
  • OutOfRangeError(请参阅上面的回溯):FIFOQueue '_1_batch/fifo_queue' 已关闭并且元素不足(请求 32,当前大小 0)

    我在使用队列中张量流读取图像时遇到问题 请让我知道我犯了什么错误 下面是代码 import tensorflow as tf slim tf contrib slim from tensorflow python framework imp
  • keras 层教程和示例

    我正在尝试编码和学习不同的神经网络模型 我对输入维度有很多复杂性 我正在寻找一些教程 显示层的差异以及如何设置每个层的输入和输出 Keras 文档 https keras io layers core 向您展示所有input shape每层
  • 如何在 Keras 中将多个数据集与一个模型一起使用?

    我正在尝试使用 LSTM 网络通过 Keras 和 Tensorflow 进行外汇预测 我当然希望它能够在很多天的交易中进行训练 但要做到这一点 我必须给它提供具有大跳跃和无运动阶段的连续数据 当市场收盘时 这并不理想 因为它变得由于这些跳
  • 在不丢失基数信息的情况下对 TensorFlow 数据集进行窗口处理?

    tf data Dataset window返回一个新的数据集 其元素是数据集 这些嵌套数据集的元素是所需大小的窗口 如果您有一个数据集 例如 Dataset range 10 并想要一个像这样的窗口数据集 0 1 2 1 2 3 7 8
  • Keras 通过设置种子获得不同的结果[重复]

    这个问题在这里已经有答案了 在keras中 每次运行都有很高的方差和不稳定的性能 为了解决这个问题 根据https keras io getting started faq how can i obtain reproducible res
  • Swift 5 MacOS 图像调整大小内存问题

    我是使用 Swift 进行 Mac OS 应用程序开发的新手 但我尝试制作简单的 ImageResizer 应用程序 我必须调整 50k 图像的大小 10个小时后 内存已增加到近120GB 我以为 Swift 也有垃圾收集器 为什么它可以增
  • 没有带有张量板的图表

    我正在读一本关于 Tensorflow 的书 我发现了这段代码 from future import absolute import from future import division from future import print
  • 单元测试内存泄漏

    我有一个应用程序存在大量内存泄漏 例如 如果打开一个视图并关闭它 10 次 我的内存消耗会增加 因为视图没有完全清理 这些是我的内存泄漏 从测试驱动的角度来看 我想编写一个测试来证明我的泄漏 并 在修复泄漏之后 断言我修复了它 这样我的代码
  • 梯度下降有哪些替代方案?

    梯度下降存在局部极小值问题 我们需要运行梯度下降指数次来找到全局最小值 谁能告诉我梯度下降的任何替代方案及其优缺点 Thanks See 我的硕士论文 https arxiv org pdf 1707 09725 pdf page 96对于
  • 如何确定 Keras Conv2D 函数中的“filter”参数

    我刚刚开始我的 ML 之旅 并且已经完成了一些教程 对我而言 不清楚的一件事是如何为 Keras Conv2D 确定 过滤器 参数 我读过的大多数资料只是将参数设置为 32 没有任何解释 这只是经验法则还是输入图像的尺寸起作用 例如 CIF
  • 什么是内部类的合成反向引用

    我正在寻找应用程序中的内存泄漏 我正在使用的探查器告诉我寻找这些类型的引用 但我不知道我在寻找什么 有人可以解释一下吗 Thanks Elliott 您可以对 OUTER 类进行合成反向引用 但不能对内部类实例进行合成 e g class
  • Caffe 的 LSTM 模块

    有谁知道 Caffe 是否有一个不错的 LSTM 模块 我从 russel91 的 github 帐户中找到了一个 但显然包含示例和解释的网页消失了 以前是http apollo deepmatter io http apollo deep
  • 在监督分类中,使用partial_fit() 的MLP 比使用fit() 的表现更差

    我正在使用的学习数据集是灰度图像flatten让每个像素代表一个单独的样本 第二张图像在训练后将被逐像素分类Multilayer perceptron MLP 前一个分类器 我遇到的问题是MLP当它一次接收到所有训练数据集时表现更好 fit
  • 默认析构函数做了多少事情

    C 类中的默认析构函数是否会自动删除代码中未显式分配的成员 例如 class C public C int arr 100 int main void C myC new C delete myC return 0 删除 myC 会自动释放
  • TensorFlow 相当于 PyTorch 的 Transforms.Normalize()

    我正在尝试推断最初在 PyTorch 中构建的 TFLite 模型 我一直在遵循PyTorch 实现 https github com leoxiaobin deep high resolution net pytorch blob 1ee
  • scikit-learn 和tensorflow 有什么区别?可以一起使用它们吗?

    对于这个问题我无法得到满意的答案 据我了解 TensorFlow是一个数值计算库 经常用于深度学习应用 而Scikit learn是一个通用机器学习框架 但它们之间的确切区别是什么 TensorFlow 的目的和功能是什么 我可以一起使用它
  • 如何在Tensorflow中保存估计器以供以后使用?

    我按照教程 TF Layers 指南 构建卷积神经网络 以下是代码 https github com tensorflow tensorflow blob r1 1 tensorflow examples tutorials layers

随机推荐

  • Hibernate慢sql未记录

    记录用 Hikari 包装的 sql 语句时出现问题 我有休眠属性 hibernate session events log LOG QUERIES SLOWER THAN MS 50 logging level org hibernate
  • Android ListView 与 SQLite

    我想刷新列表视图项目 这些项目是从 SQLite 数据库填充的 我的代码如下 public class Weeve extends Activity private String lv arr protected ListView CVie
  • 使用 google 登录进行身份验证时出现错误 12501

    我在用着谷歌登录服务 https developers google com identity sign in android start对使用我的应用程序的用户进行身份验证 当我刚刚请求电子邮件信息时 我得到了它的工作 GoogleSig
  • 如何检索实现自定义接口的所有类?

    我想要获得所有实现的类IFeature界面 Java Refelctions 似乎是一个可能的解决方案 但它并没有按照我想要的方式工作 IFeature feature new Landing Class c cls System out
  • 使用多个 jquery-ui 版本

    我们有两个使用 jQuery UI 的网站 其中一个网站包含另一个网站的一些内容 这些部分是基于 Jquery UI Accordion 构建的 但我无法加载两个版本的 UI 一个是 1 8 11 的自定义版本 另一个是完整版本 完整版本不
  • 使用JPA和JTA的单元测试代码

    我使用2个独立的数据库 所以我必须使用JTA来处理分布式事务 所以要么两个数据库都必须提交 要么都回滚 我使用开放的 JPA 和 JTA 现在使用 junit 对代码进行单元测试吗 当我尝试运行处理分布式交易的代码时 出现以下错误 我在此网
  • 如何在 Glide/Picasso/Ion 等占位符中加载 gif 图像

    无法找到在占位符中加载 gif 图像的完美解决方案 Glide with context load imageUrl asGif placeholder R drawable gifImage crossFade into imageVie
  • Android应用内购买,如何检查用户是否购买了一件商品

    在 SharedPreference 中设置一个值来标记用户已购买该商品是否可以且安全 如果用户在 SharedPreference 中破解此值会怎样 或者我每次都需要连接IAP服务来检查用户是否可以使用它 1 使用 Google Andr
  • 如何在android中通过屏幕进行自定义共享

    我的应用程序有一项共享功能 因此 当单击共享时 它应该显示要共享的应用程序列表 现在我正在使用这段代码 Intent sendIntent new Intent sendIntent setAction Intent ACTION SEND
  • 最小起订量 类中只有一个方法

    我正在使用 moq dll 当我模拟一个类 所有 IRepository 接口 时 我使用这行代码 int state 5 var rep new Mock
  • 未捕获的 InvalidData:数据与未标记的枚举 ArgsEnum 的任何变体都不匹配

    我对 Deno 很感兴趣 所以我正在尝试一下 找到了有关构建 REST API 的教程here https blog logrocket com creating your first rest api with deno and post
  • 使用 neo4j 和 py2neo 中的索引

    我刚刚开始使用 py2neo 和 neo4j 我对如何在数据库中使用索引感到困惑 我创建了一个 create user 函数 g neo4j GraphDatabaseService users index g get or create
  • 长了有什么问题吗?为什么会自动减1?

    include
  • Laravel:强制下载字符串而无需创建文件

    我正在生成一个 CSV 并且我希望 Laravel 强制下载它 但是文档 https laravel com docs 5 3 responses file downloads仅提到我可以下载服务器上已存在的文件 并且我想在不将数据保存为文
  • Java 中的 AES 加密和 C# 中的解密

    您好 我已经加密了十六进制字符串和使用标准 AES 算法加密的密钥 代码 final String key abcd Axd G pxP final javax crypto spec SecretKeySpec keySpec new S
  • 流畅的NHibernate-ClassMap继承?

    在之前的一个问题中 https stackoverflow com questions 4251687 splitting nhibernate entity row storage across multiple tables 与 Flu
  • 明智地进行向量内存分配

    假设我必须迭代一个可能非常大的数字向量 并将偶数和奇数元素复制到新的单独向量中 源向量可以具有任意比例的偶数与奇数 它可以是全偶数 全奇数或介于两者之间 为了简单起见 push back经常用于此类事情 for std size t Ind
  • 如何在 Webstorm 中提供 Python 语法着色?

    我有一个 Python 项目 我使用 WebStorm 作为我的编辑器 问题是 Python 的语法没有着色 如何以良好的语法显示 Python 页面 我搜索的不超过 我不会用 Python 开发页面 但我确实希望它们能够在 Webstor
  • 如何为 void 返回方法定义 AnswersWithDelay

    因此 我想在 Mockito 中模仿一种正在进行网络调用并等待其完成然后返回的方法 我在这里找到了这个很好的答案 https stackoverflow com a 50530261 4433222 https stackoverflow
  • Tensorflow:即使关闭会话也会发生内存泄漏?

    当我意识到 即使我在 for 循环中关闭当前会话 我的程序也会大幅减慢 并且由于正在构建的操作而导致内存泄漏 我只是在尝试四元神经网络的一些东西 这是我的代码 for step in xrange 0 200 num epochs trai