Привет, я недавно проходил курс обучения и проводил некоторые опросы по Adaboost.
. Я просматриваю некоторый код с помощью Adaboost для повышения производительности нейронной сети.
Насколько я знаю, с несколькими классами Adaboost может бытьсделано:
(1) Взвешивание данных тренировки как 1 для каждого из данных.
(2) После тренировки мы повторно взвешиваем данные, добавляя вес, если
классификатор делает это неправильно, иначе уменьшите вес, если классификатор предсказывает это правильно.
(3) И, наконец, мы берем комбинацию всех классификаторов, которые у нас есть, и принимаем максимальный (вероятность)
Iмог бы написать код об этом с помощью Keras и sklearn:
model = Model( img_input , o )
model.fit_generator(#some parameters)
from sklearn.ensemble import AdaBoostClassifier
adaboost = AdaBoostClassifier(base_estimator=model,algorithm='SAMME')
adaboost.fit_generator(#some parameters)
Мой вопрос:
Я хотел бы знать, как Adaboost используется с нейронной сетью
Я мог бы представить два способа сделать это, не зная, как Adaboost делает здесь:
(1) После завершения тренировки (1 час) мы повторно взвешиваем данные тренировки, а затем снова и снова до итерацииокончен.
(2) Если первый раундиз всех данных были переданы в нейронную сеть, а затем мы повторно взвесить данные обучения.
Разница между (1) и (2) состоит в том, как мы определяем одну итерацию в Adaboost:
(1) займет слишком много времени для завершения всей итерации
(2) просто некоторые из них не имеют смысла для меня, потому что я не думаю, что весь процесс идет к конвергенции так быстро, или число итераций должно быть установлено большим.