模型集成

模型集成

集成学习

集成学习就是说将多个“单学习器”使用某种策略结合起来,使得整体的泛化能力得到提高。因为在机器学习中我们的目标是学习到一个稳定的并且在各个方面都表现较好的模型,但往往我们只能得到一个由某种偏好的模型即在某些方面表现得比较好,因此集成学习通过集合多个弱监督模型来得到一个更好的模型。
集成学习方法一般可以分为以下几类:

  • Bagging
  • Boosting
  • Stacking

在本次任务中我们也可以使用集成学习技术,比如我们训练得到了若干个CNN模型,那么我们可以通过计算平均值的方式将这些模型集成起来。

深度学习中的集成学习

在深度学习中也有一些集成学习方法

dropout

dropout是训练CNN网络的常用技巧,在训练过程中随机丢弃神经元,可以起到缓解过拟合的作用。
在pytorch中我们可以使用nn.Dropout(val)语句来添加dropout,val指的是我们希望随机丢弃的概率。

测试集数据增强

测试集数据增强就是在测试时对测试数据进行数据增强,这将会为原始图像创造多个不同的版本,对多个版本进行计算并得到它们的平均分值最终得到输出分数。

def predict(test_loader, model, tta=10):
   model.eval()
   test_pred_tta = None
   # TTA 次数
   for _ in range(tta):
       test_pred = []
   
       with torch.no_grad():
           for i, (input, target) in enumerate(test_loader):
               c0, c1, c2, c3, c4, c5 = model(data[0])
               output = np.concatenate([c0.data.numpy(), c1.data.numpy(),
                  c2.data.numpy(), c3.data.numpy(),
                  c4.data.numpy(), c5.data.numpy()], axis=1)
               test_pred.append(output)
       
       test_pred = np.vstack(test_pred)
       if test_pred_tta is None:
           test_pred_tta = test_pred
       else:
           test_pred_tta += test_pred
   
   return test_pred_tta

结果后处理

在不同的任务中可能会有不同的解决方案,不同思路的模型不仅可以互相借鉴,同时也可以修正最终的预测结果。

在本次赛题中,可以从以下几个思路对预测结果进行后处理:

  • 统计图片中每个位置字符出现的频率,使用规则修正结果;
  • 单独训练一个字符长度预测模型,用来预测图片中字符个数,并修正结果。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值