我正在研究一个大型数据集,它有306400个图像需要处理。
但我要做的事情非常简单:调整图像大小,然后写入.TFRecords
文件。
但是,我收到out of memory
错误。
我无法多次运行脚本,因为无法追加.TFRecord
文件,所以我必须在一次运行中写入所有数据。
我尝试使用多个for
循环,因为我想在每个for
循环之后,所使用的内存将被释放,但似乎我错了。
因此我尝试使用iter()
来获取迭代器,因为使用dict
的{{1}}个对象可以节省内存,与dict.iteritems()
相比。
但没有魔力。
所以现在我不知道如何解决这个问题。
dict.iter()
如何“释放”每次迭代后使用的内存?或者我该如何保存记忆?
答案 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():
...