Как наша память потребляется при разделении набора данных Tensorflow с помощью take () и skip ()? - PullRequest
0 голосов
/ 11 июля 2020

У меня есть набор данных изображений в файлах TFRecord. Теперь, после прочтения набора данных TFRecord, я хочу разделить этот набор данных на разделение Train-Validation, поэтому я использовал следующую технику:

train_ds_size = int(full_ds_size * 0.8)

full_ds = full_ds.shuffle(1024)

train_ds = full_ds.take(train_ds_size).repeat().batch(32).prefetch(AUTO)
valid_ds = full_ds.skip(train_ds_size).batch(32).cache().prefetch(AUTO)

Здесь сначала я перетасовываю полный набор данных, а после использования .take() и .skip() для создания набора данных проверки. Поэтому мой вопрос заключается в том, что когда я обращаюсь к набору данных во время обучения модели, он сначала берет полный набор данных в память и разбивает набор данных на train_ds и valid_ds? Как здесь .shuffle() будет работать? Будет ли он просто брать 1024 изображения в памяти и давать мне пакеты для обучения и проверки или загружать полный набор данных, разделять его и выдавать пакеты? Меня больше всего беспокоит то, как он будет использовать основную память во время тренировки.

...