Как выбрать нужный тренировочный образец из mnist.load_data () - PullRequest
0 голосов
/ 02 мая 2020

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

"ValueError: Ошибка при проверке цели: ожидалось, что Activation_24 будет иметь форму (10,), но получил массив с формой (1,)"

Вот часть из моих кодов, связанных с данными:

# load data
(X_train, y_train), (X_test, y_test) = mnist.load_data()

X_train = X_train / 255
X_test = X_test / 255

X_train = X_train.reshape(-1,1,28,28) 
X_train = X_train[:1000,:,:]
X_test = X_test[:500,:,:]


y_train = y_train[:1000]
y_test  = y_test[:500]

X_test = np.array(X_test)
X_test = X_test.reshape(-1,1,28,28) 

print('X_train shape: ',X_train.shape)
print('X_test shape: ',np.shape(X_test ))
print('y_train shape: ',y_train.shape)
print('y_test shape: ',np.shape(y_test ))

вывод:

Форма X_train: (1000, 1, 28, 28) Форма X_test: (500, 1, 28, 28) y_train shape: (1000,) y_test shape: (500,)

Я правильно это делаю? Есть ли другие способы достижения цели? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Возьмите первые 1000 из обучающего набора и 500 из испытательного набора просто:

X_train = X_train[:1000].reshape(1000,28,28,1)
y_train = y_train[:1000].reshape(1000,1)

X_test = X_test[:500].reshape(500,28,28,1)
y_test = y_test[:500].reshape(500,1)

Keras использует каналы по умолчанию последними, следовательно (пакет, 28, 28, 1). Для y данные должны быть сформированы из (партии,) в (партии, 1). Вы также можете взять элементы из первого измерения с помощью [: batch] и выполнить изменение формы в той же строке.

0 голосов
/ 02 мая 2020

X_train не должно быть формы (1000, 1, 28, 28).

При использовании формата Keras в "channel_last" ваша форма данных должна быть (Пакет x Высота x Ширина x Канал) так (1000, 28, 28, 1).

Проверьте этот пример: https://keras.io/examples/mnist_cnn/

...