ValueError: Ошибка при проверке ввода: ожидалось, что conv2d_36_input будет иметь форму (3, 32, 32), но получил массив с формой (1, 10, 10) - PullRequest
1 голос
/ 22 сентября 2019

Когда я пытаюсь запустить свою модель тренировки, возникает ошибка, что мне нужно сделать, чтобы передать отчет об ошибке?

Есть ли проблемы с моей моделью или измененной деталью?

Этомоя измененная часть

# Reshape and normalize training data
trainX = train.reshape(train.shape[0], 1, 10, 10).astype( 'float32' )
x_train = trainX / 255.0
y_train = train[:,99]
# print(y_train)
# # # Reshape and normalize test data
testX = test.reshape(test.shape[0], 1, 10, 10).astype(     'float32' )
x_test = testX / 255.0
y_test = test[:,99]
# print(y_test)

Это моя модель:

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(3, 32, 32), 
activation='relu', padding='same'))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(Conv2D(64, (3, 3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(BatchNormalization())

Затем, если я изменяю свои данные, как в 3 * 32 * 32, то появляется сообщение об ошибке значения:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-31-36bf3e556ae8> in <module>()
----> 1 trainX = train.reshape(train.shape[0], 3, 32, 32).astype( 'float32' )
  2 x_train = trainX / 255.0
  3 y_train = train[:,10]
  4 # print(y_train)
  5 # # # Reshape and normalize test data

1 Ответ

0 голосов
/ 22 сентября 2019

Форма ввода вашего набора данных Train и Test отличается от вашей модели.При использовании input_shape () вам необходимо помнить, каков размер желаемого ввода.в вашем случае ваша форма выглядит как (1,10,10), которая представляет собой изображение 10x10 с одним уровнем канала / глубиной (то есть черно-белое изображение).Однако для используемой модели требуется форма (3,32,32), которая переводится в цветные изображения (т. Е. 3 канала представляют цвета RGB) с размерами 32x32.

Таким образом, если вы измените модель следующим образомкод, это может работать, но есть и другие параметры, которые необходимо оптимизировать, например, карта требуемых функций Conv2D:

model.add(Conv2D(32, (3, 3), **input_shape=(1, 10, 10)**,activation='relu', padding='same'))
...