Конкатенация Tensorflow tf.data.Dataset.list_files - PullRequest
0 голосов
/ 14 июня 2019

Я использую свой текущий код для набора данных, который имеет следующие соглашения об именах:

Файлы обучения: обучение - ?? - ??где ??являются подстановочными знаками (заполнители для любого диапазона).То же самое относится и к файлам проверки и проверки (например, проверка - ?? - ??).

В моем коде я создаю шаблон файла следующим образом:

training_file_pattern = os.path.join(config['data_dir'], "training-??-of-??") 

Но теперь я хотелобучать мою модель также на валидации и обучении, установленных вместе.Но у меня проблемы с выяснением того, как я могу взять оба набора данных.Для обучения я бы сделал:

tf_data_files = tf.data.Dataset.list_files(training_file_pattern, seed=1234, shuffle=self.shuffle)

Я подумал сделать то же самое с набором проверки и объединить его примерно так:

tf_data_files = tf.concat(tf_data_files, tf.data.Dataset.list_files(validation_file_pattern, seed=1234, shuffle=self.shuffle))

Но это не работает правильно.Что бы правильно сделать это?Я также попытался определить file_pattern по-другому, чтобы он также содержал проверку, но я не знаю, как это сделать, не взяв также набор тестов (все они находятся в одной папке).Так что я не могу сделать это:

training_and_validation_file_pattern = os.path.join(config['data_dir'], "?-??-of-??") 

Потому что это также правильно взяло бы тестовый набор?

Любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 14 июня 2019

Если я получил вашу точку зрения, вы можете просто сделать

dataset = tf.data.Dataset.list_files(os.listdir('path'))
dataset = tf.data.TextLineDataset(dataset)

В Dataset API также есть метод конкатенации

dataset = dataset_1.concatenate(dataset_2)

, но не совсем ясно, нужна ли вам эта информация Редактировать: list_files создаст набор данных с именами файлов dataset = tf.data.Dataset.list_files (['f1.csv', 'f2.csv'])

for i in ds:
    print(i) #output 'f1.csv'

Я использую версию TF 2.0 только для ясности.С другой стороны, tf.data.TextLineDataset() выводит фактические значения из текстового файла, например

tf.Tensor(b'0.7079635943784122,0.9659163071487907'

Таким образом, использование list_files создаст набор данных из файлов, а не их содержимое, и потребует применения дополнительной функции анализа к набору данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...