Q1: не совсем.Прежде всего, эта строка не нуждается в явном перемешивании, list_files
уже имеет этот параметр.Его можно контролировать по начальному значению.
tf_dataset = tf.data.Dataset.list_files(path, shuffle=True, seed=1).
Без функции повтора вы получите ошибку конца последовательности, когда итератор исчерпает все ваши файлы.Так и должно быть.Если значение None
передано в качестве значения, оно будет повторяться бесконечно, или вы можете установить точное количество эпох.
tf_dataset = tf.data.Dataset.list_files(path, shuffle=True, seed).repeat()
Q2: Это нормально, если размеры файлов различны.Единственным результатом является то, что содержимое большого файла будет иметь более высокий шанс выбора итератором.Но это не повлияет на случайность.Эта строка выполнит свою работу, перетасовывая чередующийся набор данных.Единственное, что нужно помнить, это то, что случайный буфер контролирует количество данных, загружаемых в память.Обычно рекомендуется указывать количество примеров в наборе данных (количество всех примеров во всех файлах), но в некоторых случаях это может привести к значительным накладным расходам и даже вызвать OOM.
tf_dataset = tf_dataset.shuffle(buffer_size=n_files*3)