所以我运行的DNN基于位于此处的iris模型:https://www.tensorflow.org/get_started/estimator以及位于此处的textlineReader建议:https://www.tensorflow.org/api_guides/python/reading_data
它存在内存泄漏问题,我已将泄漏范围缩小到这几行代码:
import numpy as np
import tensorflow as tf
def main():
filename_queue = tf.train.string_input_producer(file_path)
defaults = [[0.],[0.],[0.],[0.],[0]]
reader = tf.TextLineReader()
key, value = reader.read(filename_queue)
for i in range(50000):
columns = tf.decode_csv(value, record_defaults=defaults)
if __name__ == "__main__":
main()
file_path引用的.csv文件包含1行:
5.9,3.0,4.2,1.5,1
有趣的是,当我杀死程序或OOM管理器时,所有内存都会被释放。
无论如何,由于训练数据集的大小,我必须在我的程序中使用批处理,因此我还必须批量执行.csv文件的解码。
有没有办法规避这种泄漏,或者这是一个应该报告的错误?
欢迎任何信息或建议。
答案 0 :(得分:0)
更重要的是,这可以深入了解我认为在Tensorflow中称为图形操作的本质。一个分配没有在会话附近,它仍然有效。我想这更像是设置一个管道,然后通过pipelinne提供数据。
我的代码现在实际上运行得更快,没有所有的mallocs!