список массивов Numpy, передаваемых вашей модели, отличается от ожидаемого размера модели. Ожидается увидеть 2 массива (ов) - PullRequest
0 голосов
/ 10 января 2019

Получение этой ошибки в Керасе. Сценарий: Входной сигнал:

  1. Изображения с формой поезда в виде (50000, 32, 32, 3)
  2. Вход Aux с формой (50000, 1)
  3. Основная правда: (50000, 1)

Код соответствия модели

x_train_input = Input(shape=(32,32,3))

aux_rand_input = Input(shape=(1,))

out = model_inst.build_model(x_train_input, aux_rand_input)

model = Model(inputs=[x_train_input, aux_rand_input], outputs=[out])

model.fit(x=[x_train, aux_input], y=y_train, batch_size=batch_size, steps_per_epoch=x_train.shape[0] // batch_size, epochs=maxepoches, validation_data=(x_test, y_test), callbacks=[reduce_lr, tensorboard], verbose=2)

Получил эту ошибку при запуске этого.

Ошибка при проверке ввода модели: список используемых вами массивов Numpy переход на вашу модель не тот размер, который ожидала модель Ожидается увидеть 2 массива (ов), но вместо этого получил следующий список из 1 массива:

И вот как выглядят последние несколько слоев build_model.

    flatten = Flatten()(drop_5)
    # aux_input = Input(shape=(1,))
    concat = Concatenate(axis=1)([flatten, aux_input])

    fc1 = Dense(512, kernel_regularizer=regularizers.l2(weight_decay))(concat)
    fc1 = Activation('relu')(fc1)
    fc1 = BatchNormalization()(fc1)

    fc1_drop = Dropout(0.5)(fc1)
    fc2 = Dense(self.num_classes)(fc1_drop)
    out = Activation('softmax')(fc2)
    return out

1 Ответ

0 голосов
/ 10 января 2019

Для данных проверки вы передаете только один массив для ввода.

model.fit(x=[x_train, aux_input], y=y_train, batch_size=batch_size, steps_per_epoch=x_train.shape[0] // batch_size, epochs=maxepoches, validation_data=(x_test, y_test), callbacks=[reduce_lr, tensorboard], verbose=2)

Вы должны передать значения для aux_rand_input и x_train_input. Если у вас есть переменная aux_test для хранения тестовых данных для aux_rand_input, то это можно сделать следующим образом:

model.fit(x=[x_train, aux_input], y=y_train, batch_size=batch_size, steps_per_epoch=x_train.shape[0] // batch_size, epochs=maxepoches, validation_data=([x_test, aux_test], y_test), callbacks=[reduce_lr, tensorboard], verbose=2)

Edit:

Чтобы использовать метод model.fit_generator, генератор должен выдать кортеж или список из двух элементов, причем первый элемент состоит из двух массивов. Э.Г.

def generator(x, aux, y):
   ## part of the code...
   yield [batch_x, batch_aux], batch_y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...