Как разделить изображения на тестовые и обучающие наборы, используя мои собственные данные в TensorFlow - PullRequest
1 голос
/ 08 февраля 2020

Я немного запутался здесь ... Я только что провел последний час, читая о том, как разбить мой набор данных на тест / поезд в TensorFlow. Я следовал этому руководству, чтобы импортировать мои изображения: https://www.tensorflow.org/tutorials/load_data/images. Видимо можно разделить на поезд / тест с помощью sklearn: model_selection.train_test_split.

Но мой вопрос: когда я делю свой набор данных на поезд / тест? Я уже сделал это с моим набором данных (см. Ниже), что теперь? Как я могу разделить это? Должен ли я сделать это перед загрузкой файлов как tf.data.Dataset?

# determine names of classes
CLASS_NAMES = np.array([item.name for item in data_dir.glob('*') if item.name != "LICENSE.txt"])
print(CLASS_NAMES)

# count images
image_count = len(list(data_dir.glob('*/*.png')))
print(image_count)


# load the files as a tf.data.Dataset
list_ds = tf.data.Dataset.list_files(str(cwd + '/train/' + '*/*'))

Кроме того, моя структура данных выглядит следующим образом. Нет тестовой папки, нет папки val. Мне нужно было бы взять 20% за тест из этого набора поездов.

train
 |__ class 1
 |__ class 2
 |__ class 3

1 Ответ

2 голосов
/ 08 февраля 2020

Вы можете использовать tf.keras.preprocessing.image.ImageDataGenerator:

image_generator = tf.keras.preprocessing.image.ImageDataGenerator(validation_split=0.2)
train_data_gen = image_generator.flow_from_directory(directory='train',
                                                     subset='training')
val_data_gen = image_generator.flow_from_directory(directory='train',
                                                   subset='validation')

Обратите внимание, что вам, вероятно, потребуется установить другие параметры, связанные с данными для вашего генератора.

ОБНОВЛЕНИЕ: Вы можете получить два среза вашего набора данных через skip() и take():

val_data = data.take(val_data_size)
train_data = data.skip(val_data_size)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...