tensorflow - TFRecordWriter在写入文件时会占用太多内存?

时间:2017-06-11 10:15:44

标签: python for-loop memory tensorflow iterator

我正在研究一个大型数据集,它有306400个图像需要处理。

但我要做的事情非常简单:调整图像大小,然后写入.TFRecords文件。

但是,我收到out of memory错误。

我无法多次运行脚本,因为无法追加.TFRecord文件,所以我必须在一次运行中写入所有数据。

我尝试使用多个for循环,因为我想在每个for循环之后,所使用的内存将被释放,但似乎我错了。

因此我尝试使用iter()来获取迭代器,因为使用dict的{​​{1}}个对象可以节省内存,与dict.iteritems()相比。

但没有魔力。

所以现在我不知道如何解决这个问题。

dict.iter()

如何“释放”每次迭代后使用的内存?或者我该如何保存记忆?

1 个答案:

答案 0 :(得分:0)

首先要尝试的是按需加载每张图片。删除加载图片的行(第15到18行)并在gen_records之外定义以下函数:

def generate_patches():
    with open('testfile.txt', 'r') as f:
        for patch in f.readlines():
            yield patch[:-1]

然后用

替换for循环的定义
for patch in generate_patches():
    ...