Я использую api набора данных tenorflow для подачи данных в модель.Насколько мне известно, я должен перетасовать набор данных для достижения максимальной производительности модели.Тем не менее, так как я тренируюсь для одной эпохи, а затем проверяю для одной эпохи и так далее ... Я не совсем уверен, выполняю ли я тасование по-другому.Для лучшей иллюстрации ниже приведен мой код:
train_dataset = tf.data.TFRecordDataset(filename_train).map(_parse_function).filter(filter_examples)\
.shuffle(60000, seed=mseed, reshuffle_each_iteration=False) \
.batch(train_batch_size)
train_iterator = train_dataset.make_initializable_iterator(shared_name="Training_iterator")
Итак, всякий раз, когда я использую весь набор данных, я повторно инициализирую итератор как:
sess.run(train_iterator.initializer)
Это безопасно?Я спрашиваю, потому что во время обучения я получил следующую форму для функции потерь
Следовательно, является ли тасование детерминированным между разными эпохами?
Обратите внимание, что я использую начальное число в shuffle
просто для того, чтобы сделать результаты воспроизводимыми между различными прогонами кода.