第一次Kaggle比赛心得
新手避雷
- 在未组队的情况下私下共享资料属于违规行为,组队截止时间过后尤其不能这样
- 提交notebook的时候,kaggle的服务器只能找到前两个输出文件,所以一定要把你要提交的文件放在前两个(我们就是犯了这个错误,痛失银牌😢 😢
- 防shake,Kaggle的test dataset被分为public dataset和private dataset,submit后只显示在public dataset上的分数,最终排名会用在整个test dataset上的成绩来算,一般来说,ensemble效果差不多而原理不同的模型,既可以提升公榜分数,又能防shake,但是加权的weight不要调的过于仔细,否则很可能会过拟合public dataset
G2Net Detecting Continuous Gravitational Waves
这场比赛的重点在生成训练数据和噪声处理,模型大家基本都是调用TIMM库,使用efficientNet和Inception,模型和训练方面用到的trick用不多
比赛的收获
- 熟悉kaggle的使用
- 了解比赛规则
- 找到了几个优雅的深度学习的代码模板
like this
分类模型
Model
Model = encoder+classifier 输出为属于某类的概率,0~1
self.classifier = nn.Sequential(
nn.Linear(n_features, n_class, bias=True),
nn.Sigmoid() ## nn.Softmax() 多分类
)
critrion BCE
nn.BCELoss()
nn.BCEWithLogitsLoss() 自带Sigmoid
这两个函数在计算时都有对p增或减一个较小值防止p=0或1时出现无穷大
Tricks
large kernel
31×31的大卷积核
Augmentation
flip 翻转
shift 平移
masking 遮住图像的一部分
transforms_time_mask = nn.Sequential(torchaudio.transforms.TimeMasking(time_mask_param=10))
transforms_freq_mask = nn.Sequential(torchaudio.transforms.FrequencyMasking(freq_mask_param=10))
# horizontal flip
img = np.flip(img, axis=1).copy()
# vertical flip
img = np.flip(img, axis=2).copy()
# vertical shift
img = np.roll(img, np.random.randint(low=0, high=img.shape[1]), axis=1)
# tima masking
img = transforms_time_mask(img)
# frequency masking
img = transforms_freq_mask(img)
好用的库
- TIMM 计算机视觉模型库
- optuna 参数调优库
- wandb 在线可视化库

浙公网安备 33010602011771号