Я работаю над проблемой классификации текста.Сейчас я пытаюсь улучшить результаты, используя несколько выходов из моделей, обученных на разных подмножествах набора данных, то есть используя «упаковку».Каждая модель состоит из комбинации сверточных и рекуррентных слоев и имеет вывод softmax с тремя значениями.
Недавно я попытался использовать функцию API Average ().Но он просто усредняет все результаты от лучших до худших.Другие варианты, такие как Maximum (), все еще не помогают достаточно, потому что, насколько я знаю, максимизация каждого значения портит эффект «softmax».
def MultiInputClassifier(input_length, input_num, class_num, classifiers):
inputs_list = []
outputs_list = []
for i in range(input_num):
inputs = Input(shape=(input_length,), name='input_{}'.format(i))
inputs_list.append(inputs)
model_output = classifiers[i](inputs)
outputs_list.append(model_output)
preds = Average()(outputs_list)
model = Model(inputs=inputs_list, outputs=preds, name='final_model')
model.compile(optimizer='nadam', loss='categorical_crossentropy', metrics=['accuracy'])
return model
Возможно, решением было бы выбрать наиболее уверенноговывод в каждом конкретном случае.Итак, есть ли способ выбрать весь выходной сигнал, найдя максимальное значение по всем осям?
Если у нас есть [0.2, 0.7, 0.1] и (0.3, 0.6, 0.1], мы выберем просто (0,2, 0,7, 0,1].