Ошибка произошла только при добавлении опции проверки: массивы Numpy не соответствуют размеру, ожидаемому моделью - PullRequest
1 голос
/ 06 октября 2019

Странно то, что я получил эту «проверку ошибки ввода модели: список массивов Numpy, которые вы передаете своей модели, не соответствует размеру, который ожидала модель». только когда я добавляю опцию набора данных проверки (если я удаляю часть проверки в этом коде, она работает).
Ясно, что (насколько мне известно) введена подходящая форма данных проверки, а также набор данных обучения. Я только что ввел точно такую ​​же форму проверочного набора данных с обучающим набором данных.

Форма ввода для обучения / проверки выглядит следующим образом.

partal_x_train /partal_estendo /partal_y_train: (7000,1) массив numpy x_val / estendo_val / y_val: (3000,1) массив numpy

То, что я уже пробовал (2 способа)

1) другой пост в stackoverflow рекомендовал использовать «np.array ()» для случая, когда модель keras не может распознать входные данные не массивов. Тем не менее, это не работает в моем случае. Я не думаю, что это решение для меня.

2) Сначала я подумал, что это в основном из-за неправильных скобок. поэтому я просто попытался изменить эту часть. но ни один из них не работает. (Даже когда я ввожу обучающий набор данных как набор проверочных данных)

---------- пропустить: просто создать набор данных -----------

def create_mean(inputs):
    x = inputs
    x = Dense(100, activation='relu')(x)
    x = Dense(1, activation='linear', name='mean_output')(x)
    return x


def create_std(inputs):
    x = inputs
    x = Dense(100, activation='relu')(x)
    x = Dense(1, activation='softplus', name='var_output')(x)
    return x


def generatesecmodel(name):
    inputs = keras.Input(shape=(second_input,))
    mean_branch = create_mean(inputs)
    var_branch = create_std(inputs)
    label_mean = Input(shape=(1,))
    model2 = Model(inputs=[inputs, label_mean], outputs=[mean_branch, var_branch])

    loss = 0.5 * K.log(var_branch + 1e-6) + 0.5 * K.square(label_mean - mean_branch) / (var_branch + 1e-6)

    model2.add_loss(loss)
    optimizer = optimizers.Adam(lr=0.1)
    model2.compile(optimizer=optimizer, loss=None)

    model2.fit([np.concatenate((partial_estendo, partial_x_train), axis=1), partial_y_train], epochs=num_epochs,
               batch_size=batch_size, validation_data=([np.concatenate((estendo_val, x_val), axis=1), y_val]))


model = generatesecmodel('test')

Сообщение об ошибке выглядит следующим образом. ValueError: Ошибка при проверке ввода модели: список массивов Numpy, передаваемых в вашу модель, не соответствует размеру, ожидаемому моделью. Ожидается увидеть 2 массива (ов), но вместо этого получен следующий список из 1 массива: [массив ([[1.60455704e-04, -9.37487497e-01], [9.99757528e-01, 1.45345668e-01], [9.99548554]e-01, 2.66093564e-02], ..., [9.98771310e-01, -1.19436635e-01], [6.7000 ...

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