Kaggle GrandMaster在训练完模型后还会做什么?

在这里插入图片描述


原作者:Vladimir I. Iglovikov,翻译已获得原作者授权,原文链接

Vladimir I. Iglovikov, Lyft 的计算机视觉工程师,主要研究自动驾驶。曾服役于俄罗斯空降部队。UC Davis 获得过理论凝聚态物理学博士的学位。Kaggler(Grandmaster),曾获得过 Carvana 图像遮蔽挑战的冠军,以及 Dstl 卫星图像特征检测挑战的第三名。


我参加kaggle和其他机器学习平台的竞赛来增加我对机器学习的理解,我的kaggle排名是全球第19名,拿到了Kaggle Grandmaster头衔
每项机器学习项目都以新知识,新代码和新模型权重结束。
我喜欢新的知识,但忽略了旧的项目流水线可以带来的价值。代码保留在Github私有仓库中。模型权重遗落在硬盘,最后都被清理掉。
这个情况并不是kaggle 独有的。在学术界也发生着一模一样的事,学生训练模型,写论文。论文被学术会议接收后,流水线就抛弃,训练artifacts被删除然后学生继续做下一个。
这篇文章将会讨论每次机器学习挑战结束后,你可以尝试的几个小步骤。
这些步骤将:

  • 增强技术知识
  • 建立个人品牌
  • 改善职业机会
  • 让世界更美好:)

我将用这个Github仓库示范
https://github.com/ternaus/retinaface
这些步骤不是kaggle 挑战的一部分,而是来讲清楚这个项目在干什么。

I: +5 min: 把代码发布到Github公共仓库

大部分情况是代码在github上,但是是私有仓库。
如果将其公开,我们又会损失什么呢?
在某些情况下,私有仓库确实应该保证私有,但是在你的试验项目,你的kaggle解决方案,或者你的论文中,不应该是这样的。
我见过的最完美的理由是:人们认为所有公共代码都应该是完美的,如果不是的话他们可能会遭受非议。
但事实上,没有人在意的。只管做你的,照原样发布,不需要任何润色。
公开代码是心理上很重要的一步。发布不完美的代码是一种自信,大胆的行动。
此外,所有后续步骤都基于公开代码。
示例:https://github.com/ternaus/retinaface

II: +20 min: 增加可读性

你可以通过添加语法格式化工具和检查器来提高python代码的可读性。
这并不困难并且也不费时,检查器和格式化工具并不会把糟糕的代码变成优秀的,但是可读性会提高。考虑将语法规范当成个人习惯,就像喝水吃饭一样。
我有一篇文章叫9步让你拥有更专业的python代码。大家有兴趣可以看看。

第一步: 配置文件

将这些文件加到你仓库的根目录

第二步: 需求环境

使用下面的命令安装所需的库

pip install black flake8 mypy

第三步: black

有100500种格式化代码的方法,像black或yapf之类的格式化工具会修改代码来满足一组预先定义好的规则
阅读具有某些标准的代码库会容易很多。当我们花几个小时来编写代码并在不同代码风格之间切换,我们的“意志力”会被吸干。所以没有充分原因就不需要这样做。
运行

black .

将会重新格式化所有代码文件以遵循black的规则

第四步: flake8

运行

flake8

不会修改代码,但是会检查代码中的语法问题并输出到屏幕。
然后去改正他们。

第五步: mypy

Python并没有强制性的静态类型化,但是建议将类型添加到函数中并返回类型。
例如:

class MyModel(nn.Module):
    ....

def forward(x: torch.Tensor) -> torch.Tensor:
    ....
	return self.final(x)

你应该在代码中标注类型,

  1. 它会使你读代码更加容易
  2. 你也可以使用mypy包来检查参数和函数类型的一致性
    在更新代码后,在整个仓库上运行mypy
mypy .

如果mypy找到了问题,就解决它们吧

第六步: Pre-commit hook

一直手动运行flake8, black, mypy是很麻烦的。
一个叫做pre-commit hook的工具可以帮你解决该问题。
.pre-commit-config.yaml复制到仓库里面来启用它
你首先需要在你电脑上下载pre-commit hook:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值