深度学习tricks

1

先把预训练模型的特征层抽出来当作一个net,然后让所有的数据过一遍这个net,算是预训练完了。因为不需要计算梯度,可以将bitch_size开到很大,同样只过一遍,速度也很快。 然后把过一遍的数据保存的本地,然后新建一个全链接层的小net,然后加载保存的数据进行训练,同样,因为网络小,bitch_size也可以开到很大,而且速度飞快

2

使用更好的显卡跑训练,节省生命
训练的时候观察 loss 和 val_loss,防止模型过度训练造成过拟合
使用迁移学习等方法加速训练
参考先进的论文提出的结构,自己搭的模型虽然深,不一定有好的结果

3

可以尝试更多的方法提升成绩,比如可以先进行 fine-tuning,提升单个模型准确率,然后再融合,同时还可以进行更多的数据增强来提升模型的泛化能力,期待你更好的成绩。

4
在原数据集上加了预处理,之前做过salient object detection,找了个17年state of art的模型对图像做了预处理,相当于前景提取,做出来是这样的,感觉效果还不错。
这里写图片描述
没加salient object detection预处理正确率75%,加了之后正确率81%,前面的那位只微调resnet50到0.61说明还有调参空间。

http://crcv.ucf.edu/papers/cvpr2017/salobjshortconnections.pdf

5

预测这里我们用到了一个小技巧,我们将每个预测值限制到了 [0.005, 0.995] 个区间内,这个原因很简单,kaggle 官方的评估标准是 LogLoss,对于预测正确的样本,0.995 和 1 相差无几,但是对于预测错误的样本,0 和 0.005 的差距非常大,是 15 和 2 的差别。参考 LogLoss 如何处理无穷大问题,下面的表达式就是二分类问题的 LogLoss 定义。

LogLoss=1ni=1n[yilog(y^i)+(1yi)log(1y^i)] LogLoss = − 1 n ∑ i = 1 n [ y i log ⁡ ( y ^ i ) + ( 1 − y i ) log ⁡ ( 1 − y ^ i ) ]

6
shuffle引入梯度下降方向的随机性
避免训练集沿固定路径下降
有时候训练集loss跟精度不好,检查一下是否打开

7
比如可以先进行 fine-tuning,提升单个模型准确率,然后再融合,同时还可以进行更多的数据增强来提升模型的泛化能力,

8
把原始图像的短边随机resize到256-480
test的时候稍微扩张一下test的图片的尺寸
224->288
299->363

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值