第一次Kaggle比赛心得

新手避雷

  1. 在未组队的情况下私下共享资料属于违规行为,组队截止时间过后尤其不能这样
  2. 提交notebook的时候,kaggle的服务器只能找到前两个输出文件,所以一定要把你要提交的文件放在前两个(我们就是犯了这个错误,痛失银牌😢 😢
  3. 防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)

了解更多Augmentation方法可见博客论文

好用的库

  1. TIMM 计算机视觉模型库
  2. optuna 参数调优库
  3. wandb 在线可视化库
posted @ 2023-01-18 13:28  榴莲千层ya  阅读(164)  评论(0)    收藏  举报