Застрял соответствие выходной формы Conv2DNet для ожидаемого тензора - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь реализовать модель, представленную здесь в Керасе. Я более или менее решил, что модель Keras эквивалентна:

inputShape = (32, 640, 3)

model = Sequential()
model.add(Conv2D(NC//2, kernel_size=(4,4), strides=(2,2), kernel_regularizer=regularizers.l2(1e-5), activation='relu', padding='same', input_shape=inputShape))
model.add(Conv2D(NC, kernel_size=(4,4), strides=(2,1), activation='relu', kernel_regularizer=regularizers.l2(1e-5), padding='same'))
model.add(Conv2D(NC, kernel_size=(8,5), strides=(8,5), activation='relu', kernel_regularizer=regularizers.l2(1e-5), padding='same'))
model.add(Reshape((-1, MAX_CHAR, NC)))

Обучающие данные состоят из 5000 32х640 изображений случайно сгенерированных строк и разбиты на два массива: входные данные A и выходные данные Y. A - матрица изображений (NIMG, Height, Width, Channel). Y - это матрица символов (NIMG, MAX_CHAR).

MAX_CHAR - максимальное количество символов в изображении, в данном случае 64. NC - это количество возможных различных символов, в данном случае 63.

Проблема в том, что когда я запускаю model.fit(A, Y), я получаю:

ValueError: Error when checking target: expected reshape_1 to have 4 dimensions, but got array with shape (5001, 64)

Это имеет смысл, учитывая, как в посте блога сказано:

целевая матрица - это трехмерная матрица с тремя измерениями соответствует семплу, символьному и горячему кодированию 1 соответственно.

Я пробовал model.Flatten(), но это оставляет мне форму (4032,), намного больше, чем 64 символа в данных тренировки. Я также пытался поиграться с векторными значениями Reshape, но безрезультатно.

Итак, мой вопрос: я что-то не так делаю? Есть ли что-то, что я в корне неправильно понимаю, или есть решение, о котором я просто не могу думать / найти?

1 Ответ

0 голосов
/ 31 августа 2018

Очевидно, как упоминалось в комментариях, одноразовое кодирование меток (т. Е. Y) решило проблему.

Примечание: этот ответ публикуется как вики сообщества, как предлагается в принятом ответе из "Вопрос без ответов, но проблема решена в комментариях (или расширена в чате)" .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...