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
для определенных приложений (особенно более нестандартных), поэтому выбор за вами.