Datawhale 学CV--task 5模型集成
记录几个关于模型集成的问题:
1、validate set的留出法(还有k-折交叉验证)
【常见的集成学习方法有Stacking、Bagging和Boosting,同时这些集成学习方法与具体验证集划分联系紧密。】
原来常说的集成学习,跟验证集划分相关,以前常看到集成,但不知道是怎么做,以为是多个模型test结果的处理。
2、dropout也是集成的一种。
以前以为只有在FC层后,因为参数比较多,现在知道还有conv的后面,具体是在激活层后面,pooling层前面。例如
nn.Conv2d(3, 64, kernel_size=(3, 3), stride=(2, 2)),
nn.ReLU(),
nn.Dropout(0.2),
nn.MaxPool2d(2),
3、TTA是测试时用的集成方法,虽然代码里有TTA,但是还设里一个False的flag,所以实际是没有用TTA?
但也提醒注意:
- 集成学习只能在一定程度上提高精度,并需要耗费较大的训练时间,因此建议先使用提高单个模型的精度,再考虑集成学习过程;
- 具体的集成学习方法需要与验证集划分方法结合,Dropout和TTA在所有场景有可以起作用
4、变换Lr。固定Lr的方法是在优化器里指定;如果通过看loss曲线,确定Lr修改的epoch,可以写一个判断语句,修改Lr变量。
还有一个StepLr,暂时不会用。