#python #tensorflow #tfrecord #tf.keras #eager-execution
#python #tensorflow #tfrecord #tf.keras #нетерпеливое выполнение
Вопрос:
Предположим, у меня есть 3 файла tfrecord, а именно neg.tfrecord
, pos1.tfrecord
pos2.tfrecord
.
Я использую
dataset = tf.data.TFRecordDataset(tfrecord_file)
этот код создает 3 объекта Dataset.
Размер моего пакета составляет 400, включая 200 отрицательных данных, 100 данных pos1 и 100 данных pos2. Как я могу получить желаемый набор данных?
Я буду использовать этот объект dataset в keras.fit() (быстрое выполнение).
Моя версия tensorflow 1.13.1.
Раньше я пытался получить итератор для каждого набора данных, а затем вручную объединить после получения данных, но это было неэффективно, а загрузка графического процессора была невысокой.
Ответ №1:
Вы можете использовать interleave
filenames = [tfrecord_file1, tfrecord_file2]
dataset = (Dataset.from_tensor_slices(filenames).interleave(lambda x:TFRecordDataset(x)
dataset = dataset.map(parse_fn)
...
Или вы даже можете попробовать параллельное чередование. Смотрите https://www.tensorflow.org/api_docs/python/tf/data/TFRecordDataset#interleave
https://www.tensorflow.org/api_docs/python/tf/data/experimental/parallel_interleave
Комментарии:
1. да, это работает! Но я обнаружил, что interleave в среднем может считывать только 3 файла tfrecord. Если мой текущий размер пакета равен 400, мне нужно взять 200 выборок из neg, 100 выборок для pos1 и 100 выборок для pos2. Как я могу сделать?
2. Вы можете сделать это в своей функции parse. Или, может быть, flat_map подойдет вам tensorflow.org/api_docs/python/tf/data/Dataset#flat_map Или, может быть, лучше создать другой вопрос с большей конкретикой и включить код, который вы пробовали
Ответ №2:
Это сработало для проекта, который я в настоящее время выполняю на Kaggle.
Я прочитал 5 наборов данных за разные годы и использовал следующий код для их объединения.
Благословения- Джон-Эрик
frames=[df,df1, df2, df3, df4]
данные = pd.concat (фреймы)
данные
Комментарии:
1. Привет, оригинальный плакат не запрашивает объединение нескольких
pandas.dataframe
.