предварительная обработка изображений не работает в vgg16 - PullRequest
0 голосов
/ 23 апреля 2019

Я изучаю классификацию изображений с помощью трансферного обучения (vgg16), и я использую встроенный набор данных mnist моды keras.

(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()

для предварительной обработки данных для vgg16, я использовал следующие команды, импортировав preprocess_input из keras.applications.vgg16

X_train = preprocess_input(x_train)
X_test = preprocess_input(x_test)

train_features = vgg16.predict(np.array(X_train), batch_size=256, verbose=1)
test_features = vgg16.predict(np.array(X_test), batch_size=256, verbose=1)

но я получаю сообщение об ошибке ниже

ValueError: Error when checking input: expected input_1 to have 4 dimensions, but got array with shape (60000, 28, 28)

Я использую keras2.2.4, пункт 19.0.3

1 Ответ

0 голосов
/ 23 апреля 2019

Модный набор данных mnist имеет изображения в градациях серого, это означает, что он имеет только один канал глубиной, а VGG16 обучается с изображениями RGB с 3 каналами глубиной.По вашей ошибке вы не можете использовать VGG16 с одноканальным входом.Чтобы использовать VGG16 для набора данных fashion mnist, вы должны прочитать изображения как три канала.Вы можете дополнительно обработать ваши X_train и X_test следующим образом, используя np.stack:

import numpy as np
X_train = np.stack((X_train,)*3, axis=-1)
X_test = np.stack((X_test,)*3, axis=-1)
...