Convolutional Neural Net Architecture - ValueError: Ошибка при проверке цели - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь тренировать сверточный нейрон net. Поэтому я использую набор из 646 изображений / номерных знаков в оттенках серого, которые содержат 7 символов (0-9, AZ и пробелы, всего 37 возможных символов). Это мои тренировочные данные X_train. Их форма (646, 600, 1200) с цветовым кодом 1 (шкалы серого). Я добавил к данным черную рамку, чтобы получить их одинаковый размер (600, 1200).

У меня также есть набор данных, который содержит метки этих изображений, которые я в горячем виде кодировал в numpy массив формы (646, 7, 37). Это мои данные y_train.

Теперь я пытаюсь применить нейронную сеть, которая выглядит так:

CNN

входами являются 646 изображений. Затем я собираюсь использовать сверточный слой с 32 фильтрами, размером ядра 3х3 и функцией активации relu.

После этого я использую MaxPooling2D (2, 2) с выпадением 0,25. После этого я хотел бы применить Fully Connected Layer с 64 нейронами. И после этого я хотел бы использовать полностью подключенный слой с 7 нейронами из-за 7-символьных возможностей, а затем полностью подключенный слой softmax с 37 нейронами в каждом из 7 нейронов слоя из-за 37 различных возможных символов, чтобы получить их вероятности. Поэтому я использовал приведенный ниже код:

X_train = X_train.reshape(646, 600, 1200, 1)
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), input_shape = (600, 1200, 1), activation = "relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(64, activation = "relu"))
model.add(Dense(8, activation = "relu"))
model.add(Dense(37, activation = "softmax"))

model.compile(optimizer="rmsprop", loss="categorical_crossentropy", metrics=["accuracy"])

model.fit(X_train, y_train, batch_size = 32, epochs = 10, shuffle = True)

Первый вопрос: соответствует ли этот код архитектуре, которую я имею в виду?

Второй вопрос: при запуске этого кода я получил ошибку ValueError:

ValueError: Error when checking target: expected dense_3 to have 2 dimensions, but got array with shape (646, 7, 37)

Как мне устранить эту ошибку?

Заранее большое спасибо!

...