Ошибка при проверке цели: ожидалось, что concatenate_1 будет иметь форму (1,), но получил массив с формой (851,) - PullRequest
1 голос
/ 12 марта 2019

У меня есть проблема с размерами при конкатенации керасов.Кажется, что выходной массив модели (None, 851) отличается от размера, указанного в сообщении об ошибке.Вот что я получаю:

input_img = Input(shape=(32, 100, 1))

conv1 = Conv2D(filters = 64, kernel_size=(5, 5), strides=1, padding="same", activation="relu")(input_img)
maxpool1 = MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)(conv1)

conv2 = Conv2D(filters = 128, kernel_size=(5, 5), strides=1, padding="same", activation="relu")(maxpool1)
maxpool2 = MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)(conv2)

conv3 = Conv2D(filters = 256, kernel_size=(3, 3), strides=1, padding="same", activation="relu")(maxpool2)
maxpool3 = MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)(conv3)

conv4 = Conv2D(filters = 512, kernel_size=(3, 3), strides=1, padding="same", activation="relu")(maxpool3)
conv5 = Conv2D(filters = 512, kernel_size=(3, 3), strides=1, padding="same", activation="relu")(conv4)
flat1 = Flatten(data_format=None)(conv5)
dense1 = Dense(units = 4096, activation = "relu")(flat1)
dense2 = Dense(units = 4096)(dense1)

towers = [Dense(units = 37, activation='softmax')(dense2) for i in range (23)]
output = concatenate(towers, axis = -1)

char = Model(input=input_img, output=output)

Вот краткая информация о модели

Когда я пытаюсь соответствовать своей модели, я получаю следующее сообщение: ValueError: Ошибка, когдапроверка цели: ожидалось, что concatenate_1 будет иметь форму (1,), но получил массив с формой (851,)

Я не понимаю, почему concatenate_1 должен иметь форму (1,), а не (851,) или (нет), 851) Размер моего target_train равен (867, 851), поэтому.

Кто-нибудь когда-нибудь сталкивался с такой ошибкой?

Большое спасибо

1 Ответ

0 голосов
/ 12 марта 2019

Проблема заключается в ваших target_train, желаемых результатах, которые вы намереваетесь выучить. Сеть имеет после объединения 23 * 37 -> 851, что в сводке равно (None, 851), где None - динамический размер пакета.

Вам необходимо выяснить, как вы передаете target_train в функцию .fit. Выход модели составляет 851, но вместо этого тренировочный цикл дает одну единственную цель.

...