Как объединить несколько наборов данных в один набор данных?

#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 .