我的数据集组织如下:
patient_{i}/dataset_{j}
其中i和j是整数索引。现在,对于每个数据集文件夹dataset_{j}
,我想创建一个单独的tfrecord(我使用的是Tensorflow 2.0稳定版)。为此,我有以下代码:
for path in paths:
dset = self.get_dset(path,only_labelled=self.only_labelled)
self._create_record(dset,os.path.split(path)[0],self.tfrecord_filename)
get_dset
除了使用tf.data.Dataset.from_tensor_slices
返回数据集外什么都不做,而create_record
除了序列化数据集并将其写入磁盘外没有任何其他作用。因此,一旦进入新的循环迭代,我便无处愿意存储先前创建/存储的数据集。但是,随着循环的进行,内存消耗不断增加。这种预期的行为与在后台创建执行tf功能的tf图有关吗?我认为当要使用的数据量太大而无法容纳在内存中时,我正在做的事情很标准,所以我不知道tf将数据保留在RAM中的原因是什么。关于如何避免这种情况的任何提示/建议,将不胜感激。