Нет такого аргумента в mnist.load_data
.Вместо этого вы можете объединить данные с помощью numpy
, а затем разделить с помощью sklearn
(или numpy
):
from keras.datasets import mnist
import numpy as np
from sklearn.model_selection import train_test_split
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x = np.concatenate((x_train, x_test))
y = np.concatenate((y_train, y_test))
train_size = 0.7
x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=train_size, random_seed=2019)
Установить случайное начальное число для воспроизводимости.
Через numpy
(если вы не используете sklearn):
# do the same concatenation
np.random.seed(2019)
train_size = 0.7
index = np.random.rand(len(x)) < train_size # boolean index
x_train, x_test = x[index], x[~index] # index and it's negation
y_train, y_test = y[index], y[~index]
Вы получите массивы приблизительно необходимого размера (~ 210xx вместо 21000 тестового размера).
Исходный код mnist.load_data
похоже, что эта функция просто выбирает эти данные из URL-адреса, уже разделенного как тест 60000/10000, поэтому существует только обходной путь объединения.
Вы также можете загрузить набор данных MNIST из http://yann.lecun.com/exdb/mnist/ и предварительно обработать еговручную, а затем объединить его (как вам нужно).Но, насколько я понимаю, он был разделен на 60000 примеров для обучения и 10000 для тестирования, потому что это расщепление используется в стандартных тестах.