Memory leaks Tensorflow深度学习记忆泄漏?

Memory leaks Tensorflow深度学习记忆泄漏?,memory-leaks,tensorflow,Memory Leaks,Tensorflow,我正在使用Tensorflow进行GPU加速的深度学习,并且遇到内存泄漏(RAM类型,不在GPU上) 几乎毫无疑问,我已经把范围缩小到了训练线 self.sess.run(self.train_step, feed_dict={self.x: trainingdata, self.y_true: traininglabels, self.keepratio: self.training_keep_rate}) 如果我对该行进行注释,并且仅对该行进行注释(但仍对几千个训练批次进行所有预处理和验证

我正在使用Tensorflow进行GPU加速的深度学习,并且遇到内存泄漏(RAM类型,不在GPU上)

几乎毫无疑问,我已经把范围缩小到了训练线

self.sess.run(self.train_step, feed_dict={self.x: trainingdata, self.y_true: traininglabels, self.keepratio: self.training_keep_rate})
如果我对该行进行注释,并且仅对该行进行注释(但仍对几千个训练批次进行所有预处理和验证/测试等),则不会发生内存泄漏

泄漏大约为每小时几GB(我运行Ubuntu,有16GB RAM+16GB交换;系统在运行1-3小时后变得非常滞后且无响应,大约使用了1/3-1/2的RAM,这对我来说有点奇怪,因为我仍然有很多RAM,发生这种情况时CPU大部分是空闲的…)

以下是一些与此相关的初始化程序代码(仅在开始时运行一次):

    with tf.name_scope('after_final_layer') as scope:
        self.layer1 = weights["wc1"]
        self.y_conv = network(self.x, weights, biases, self.keepratio)['out']
        variable_summaries(self.y_conv)
        # Note: Don't add a softmax reducer in the network if you are going to use this
        # cross-entropy function
        self.cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(self.y_conv, self.y_true, name = "softmax/cross_ent"), name = "reduce_mean")
        self.train_step = tf.train.AdamOptimizer(learning_rate, name = "Adam_Optimizer").minimize(self.cross_entropy)

        self.prediction = tf.argmax(self.y_conv, 1)
        self.correct_prediction = tf.equal(self.prediction, tf.argmax(self.y_true, 1))

        self.accuracy = tf.reduce_mean(tf.cast(self.correct_prediction, tf.float32))

        if tensorboard:
            # Merge all the summaries and write them out to the directory below
            self.merged = tf.summary.merge_all()
            self.my_writer = tf.summary.FileWriter('/home/james/PycharmProjects/AI_Final/my_tensorboard', graph=self.sess.graph)

        # self.sess.run(tf.initialize_all_variables()) #old outdated way to do below
        tf.global_variables_initializer().run(session=self.sess)
我也很高兴发布所有的网络/初始化代码,但我认为这可能与此次泄漏无关

我是做错了什么还是发现了Tensorflow bug?提前谢谢

更新:我可能很快会提交一份错误报告,但我首先要验证我没有因为自己的错误而打扰他们。我补充说

self.sess.graph.finalize()

到初始化代码的末尾。据我所知,如果我不小心添加到图形中,它应该抛出一个异常。没有抛出异常。我使用的是tf版本0.12.0-rc0、np版本1.12.0b1和Python版本2.7.6。这些版本可能已经过时了吗?

这个问题在1.1中得到了解决。忽略(在撰写本文时)表示最新稳定版本为r0.12的内容;1.1是最新的稳定版本。请参阅和

我建议在TF github上提交一个bug