【发布时间】:2019-07-18 17:18:48
【问题描述】:
您好,我最近在学习 Adaboost 课程并做了一些调查
我查看了一些使用 Adaboost 提升神经网络性能的代码
据我所知,Adaboost 可以通过多个类来完成:
(1)将训练数据加权为每个数据的 1。
(2)在训练后,我们通过添加权重来重新加权数据,如果
分类器做错了,如果分类器预测正确,则减少权重。
(3)最后我们取所有分类器的组合,取最大的一个(概率)
我可以用 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) 只是一些对我来说没有意义的方法,因为我认为整个过程不会收敛得这么快,或者迭代次数需要设置得很大。
【问题讨论】:
标签: algorithm keras scikit-learn neural-network adaboost