ARTS - week 9
Algorithm
题目链接
47. 全排列 II - 力扣(LeetCode) (leetcode-cn.com)
给定一个可包含重复数字的序列 nums
,按任意顺序 返回所有不重复的全排列。
题目分析
特点:先排序(排序是剪枝的前提),再进行深度优先搜索。为了进行优化,需要在同一位置进行确认是否某个数字(存在重复数字)已经 used 了,如果 used 则进行剪枝操作。
代码实现
Review
Automate your Python project with Makefile | Anton Zhiyanov 这篇文章和上周介绍的文章是同一个作者,都是介绍 python 工程化方法的。上周文章介绍的是 python 打包的技巧。本文则是介绍 python 任务自动化的介绍。
什么问题?
在开发过程中,有很多任务需要进行,例如用 linter 检查代码,进行单元测试,部署到 docker 上面。手动操作非常繁琐,.sh 文件能够进行任务的自动化,但是会弄乱文件结构。在 IDE 中进行设置也需要逐步运行,还是不是太方便。
使用方法?
本文介绍的方法,是利用 Makefile 来进行自动化,适用于 Linux 和 MacOS 系统。除了能够用于 C 语言的编译链接,makefile 也可以用于自动化其他任务,例如 python 项目的自动化。下面是一个示例
下面是进行自动化 lint 的示例
通过 makefile, 也可以列出各个任务之间的依赖关系,如 test 之前需要进行 lint, 可以通过下述代码进行说明
这个作者目前文章就这两篇,但是确实是实打实的技术干货,推荐使用 python 的程序员阅读。
Tips
本周介绍一个深度学习语义分割任务的技巧,深度学习语义分割任务会有一个固定的问题,就是标注的 mask 质量不佳,不同的人标注的结果在边缘地方会有些许差异,这也会导致训练出来的模型在边界地区会出现模糊。为了解决这个状况,可以对边界位置进行膨胀操作,然后膨胀的区域权重为 0,仅训练标注区域,这样子模型在模糊地带有个缓冲,可以更自然的学习模型边框,不至于输出一个模糊结果。
Share
本周分享的观点是:构建数据->算法循环工具链是优先于模型优化的。本观点在吴恩达老师吴恩达的二八定律:80%的数据+20%的模型=更好的机器学习 (qq.com) 这篇文章出来之前很早就提出了,否则不会在阿里优先去做工业标注平台。原因是,通过实践证明,数据改进带来的提升是远大于算法优化的,只有数据获取成本太高,数据标注质量足够好的时候,算法优化才能显示出优势,在这之前,扩充数据规模,改进标注质量是能够花 20%的精力,达到 80%的效果。而且这个过程,也是构建优秀模型的必由之路。没有优秀的测试集,整个算法优化就像是没有导航系统,你甚至不知道哪个算法是真正更优秀的。所以正常的 AI 流程应该是先收集数据,跑基线模型,通过 AI System 持续进行数据扩充和标注清洗,继续训练模型。如果一个 AI 专家说自己在算法上做了很多努力,但是在数据上面没有操心,那么要么他们分工太明确,他没有参与整个链路,要么这是只在公开数据集跑过,没有参与实际落地的专家。
版权声明: 本文为 InfoQ 作者【steve_lee】的原创文章。
原文链接:【http://xie.infoq.cn/article/0eb6197d5b623061b60c67fd3】。文章转载请联系作者。
评论