У меня есть набор данных, организованный следующим образом:
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 будет хранить данные в ОЗУ. Любая подсказка / предложение относительно того, как избежать этого, будет принята с благодарностью.