Как изменить количество изображений для обучения и оценки в tenorflow2.0? - PullRequest
1 голос
/ 29 апреля 2019

Набор данных Fashion-MNIST автоматически возвращает 60 000 изображений для обучения и 10 000 изображений для оценки. Как мне изменить эти цифры?

Вот мой colab исходный код и соответствующая часть:

fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

1 Ответ

3 голосов
/ 29 апреля 2019

1.Наборы данных Tensorflow

Начиная с TF2.0, рекомендуется использовать tf.data API с tf.keras.tf.data.Dataset как часть вышеупомянутого позволяет вам легко выполнять различные операции с вашими данными, такие как увеличение изображения (например, вращение / сдвиг) с помощью вызовов map (другие возможности можно найти в документации ).

Наборы данных Tensorflow является частью экосистемы Tensorflow и позволяет упростить загрузку данных (имеются различные готовые наборы данных, , включая Fashion MNIST , см. Здесь для доступных опций) и получить его уже в форме tf.data.Dataset.

Используя этот фрагмент:

import tensorflow_datasets as tfds

train, test = tfds.load("fashion_mnist", as_supervised=True)

Загрузит данные и автоматически разделит их на test и train (то же самоекак эквивалент Keras, за исключением типа данных).

Вы можете создавать свои собственные конструкторы наборов данных, хотя для стандартных операций достаточно будет вызвать tfds.load.

Пользовательские разбиения

Теперь, если вам нужно другое разбиение (не по умолчанию 60000 train и 10000 test), вы можете определить его, используя tfds.Split object.По умолчанию каждый из предоставленных наборов данных (так что ваш Fashion MNIST включен) обеспечивает значения по умолчанию tfds.Split.TRAIN и tfds.Split.TEST (некоторые также предоставляют tfds.Split.VALID).

Эти разбиения по умолчанию могут быть далее разделены на частиразличными способами:

Разделить одну из TEST или TRAIN на N части.Приведенный ниже код будет загружать только 30 000 изображений из TRAIN и 5.000 изображений из теста:

import tensorflow_datasets as tfds

train_half_1, train_half_2 = tfds.Split.TRAIN.subsplit(2)
test1, test2, test3, test4 = tfds.Split.TEST.subsplit(4)

train_first_half = tfds.load("fashion-mnist", split=train_half_1)
test_second_quarter = tfds.load("fashion-mnist", split=test2)

Аналогичным образом вы можете взять N процентов от каждого разделения:

first_10_percent = tfds.Split.TRAIN.subsplit(tfds.percent[:10])

Или вы можетедаже объединить разбиения, чтобы получить больше данных, как это (вы могли бы разделить эти данные, как вам нравится:

train_and_test = tfds.Split.TRAIN + tfds.Split.TEST

2. Keras

Keras загружает данные в формате numpy ихотя это не рекомендуется и не позволяет выполнять много операций с простыми map, вы можете разделить их, используя стандартную нотацию Python для нарезки :

import tensorflow as tf

fashion_mnist = tf.keras.datasets.fashion_mnist

(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()

# First 10.000 elements from train
X_train_subset = X_train[:10000]

# Elements from 1000 to 5000 from test labels
y_test_subset = y_test[1000:5000]

# Elements from 8500 to the end of test data
X_test_subset = X_test[8500:]

С другой стороны, это может бытьгораздо удобнее работать с numpy массивами вместо tf.data.Dataset для определенных приложений (особенно более нестандартных), поэтому выбор за вами.

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