Из документации keras для evaluate
можно найти здесь
Возвращает
Скалярные тестовые потери (если модель имеет один выход и нетметрики) или список скаляров (если модель имеет несколько выходов и / или метрик).Атрибут model.metrics_names предоставит вам метки отображения для скалярных выходов.
В соответствии с вашей моделью, если вы сделаете print(model.metrics_names)
, вы получите ['loss', 'main_output_loss', 'aux_output_loss']
.
model.evaluate
создает скаляр этого формата, который указывает, чему соответствует каждое из тех чисел, которые вы видите в выходных данных метода evaluate
.
Следовательно, ваш код,
score1, score2, acc1, acc2 = model.evaluate(x={'main_input': x1test, 'aux_input': x2test},
y={'main_output': ytest, 'aux_output': ytest},
batch_size=BATCH_SIZE)
приведет к ошибке, потому что в скаляре всего 3 индекса и код ожидает найти 4
.
Кроме того,
score, acc = model.evaluate(x={'main_input': x1test, 'aux_input': x2test},
y={'main_output': ytest, 'aux_output': ytest},
batch_size=BATCH_SIZE)
приведет к ошибке из-за того, что evaluate
.
возвращает больше значений. Вы можете сделать что-то подобное, есливы хотите распаковать результат evaluate
в вашей модели напрямую.
loss, main_loss, aux_loss = model.evaluate(x={'main_input': x1test, 'aux_input': x2test},
y={'main_output': ytest, 'aux_output': ytest},
batch_size=BATCH_SIZE)
Также в вашем коде я вижу acc1
и acc2
, что заставляет меня предположить, что вы ожидаете оценитьточность модели.
Сказав это, я вижу, что вы не использовали metrics
для компиляции модели.Если вы хотите оценить acc
модели, то скомпилируйте свою модель следующим образом.
model.compile(optimizer='rmsprop',
loss={'main_output': 'categorical_crossentropy', 'aux_output': 'categorical_crossentropy'},
loss_weights={'main_output': 1., 'aux_output': 0.2}, metrics=['acc'])
Затем на model.evaluate()
вы получите скаляр, соответствующий
['loss',
'main_output_loss',
'aux_output_loss',
'main_output_acc',
'aux_output_acc']
Следовательно,Вы можете распаковать это так,
loss, main_loss, aux_loss, main_acc, aux_acc = model.evaluate(x={'main_input': x1test, 'aux_input': x2test},
y={'main_output': ytest, 'aux_output': ytest},
batch_size=BATCH_SIZE)