如何看懂一个深度学习的项目代码
这一点是针对于深度学习项目代码的通用方法,对于一个深度学习项目,我们一般想要了解的最关键点无非就是数据、模型和如何训练等几个方面。
如果你想快速看看这个开源项目的测试效果,直接读readme看使用方法即可。
如果这个项目作者提出了一个新的模型框架,比如说bert,你想了解它的模型框架细节,直接定位到models目录下的带有model字眼的.py文件开始读。
或者是你想看这个项目是如何训练的,都用了哪些训练的tricks,它的参数初始化是如何做的,batchsize用的多大,训练过程中学习率如何调整的等等,那么话不多说,直接定位到带train的.py文件即可。
如下图faster-rcnn的3个训练文件。
不知道这个问题如何解决,直接谷歌又找不到好合适的方法的时候。
这时候我们可能会寄希望于在GitHub上搜罗一番。
比如说我们想要知道对于极度数据不平衡时如何给损失函数加权重的方法,再比如对于多标签问题进行模型预测时如何找到最佳分类阈值等等。
这些问题都是我们在做实际项目时都可能会碰上的,在这种情况下若是能在GitHub上找到类似场景的处理方法,相信你会瞬间来了精神。
笔者虽然平时偶尔会有去GitHub读一些代码,但说要达到个人精进的level,还远远不够。
比如说前面的PyTorch 750k的源码,这么大的代码量,阅读策略一定是分治思想,分散包围和各个击破。
把项目进行分解,设定阅读计划和目标,在超强的执行力下还是有可能完成的。
这不是普通人干的事,但我相信能在深度学习领域精进的人都不会是普通人。
当然了,我个人的补充是:先看readme文档,先运行成功再说,否则空谈。
遇见bug怎么办?
- 第一类bug,环境不兼容导致的bug,严格按照作者提供的运行环境,并对照环境的版本信息,对齐本地环境和作者要求的环境。
- 第二类bug,深度学习框架带来的bug,这部分bug可以在bing上进行搜索,查看解决方案。
- 第三类bug,项目本身相关的bug,这类bug最好是在github的issue区域进行查找,如果无法解决可以在issue部分详细描述自己的问题,等待项目库作者的解答。
运行顺利的话,代表可以进行debug操作,对文件某些细节不确定的话,可以通过debug的方式查看变量详细内容。
用IDE打开项目:
笔者是vscode党,推荐使用vscode+scp+mobaxterm+远程服务器的方式进行运行。
打开项目以后,从运行入口开始阅读:
阅读入口文件的逻辑,查看调用到了哪些包。
通过IDE的功能跳转到对应类或者函数进行继续阅读,配合代码注释进行分析。
分析过程可能会需要软件工程的知识,比如画一个类图来表述项目的关系。
一开始可以泛读,大概了解整体流程,做一些代码注释。而后可以精读,找到文章的核心,反复理解核心实现,抽丝剥茧,一定可以对这个项目有进一步的理解。
话说回来:深度学习的代码结构是没有一个统一标准的。一方面,代码结构取决于开发者自身的编程观念和水平,有人会一路长函数写到底,有人会利用面向对象进行封装和复用。另一方面,不同规模的项目,本身需要的结构也是很不一样的。Prototype代码讲究简洁易懂,而平台级别的库讲究模块化和可维护性,这也是为什么大家看懂了MNIST上的代码,却经常看不懂开源库的原因。
训练和测试代码一般写在主程序里,也有的会封装成叫train或者test/inference之类的函数。模型定义部分一般是一个独立文件,叫model.py。数据集读取和预处理代码一般在data.py或者utils.py之类的文件里。
参考:
https://www.cnblogs.com/pprp/p/14819944.html
https://www.zhihu.com/question/406133826/answer/1925821995
如何看懂一个深度学习的项目代码相关推荐
- 大话卷积神经网络CNN,小白也能看懂的深度学习算法教程,全程干货建议收藏!...
来源 | 程序员管小亮 本文创作的主要目的,是对时下最火最流行的深度学习算法的基础知识做一个简介,作者看过许多教程,感觉对小白不是特别友好,尤其是在踩过好多坑之后,于是便有了写这篇文章的想法. 由于文 ...
- 怎么看懂别人写的单片机项目代码?
记得刚开始接触代码的时候,总觉得很神秘,也好奇到底是怎样的牛人,才能把这么多复杂的"天书"写出来去. 当时多希望自己一夜之间也拥有这种能力,能自己写代码去把自己的想法通过技术的手段 ...
- 【图解深度学习】连小学生都能看懂的深度学习基础总结【第一章什么是神经网络?】
- 如何开始一个深度学习项目
刚接触深度学习的小伙伴们应该有这样的疑惑:如何从零起步,从一个简单的idea开始,一步一步推进一个深度学习的学术项目,完成从idea到paper的成功转化?下面我们一起来看看慕尼黑工业大学的Matth ...
- 如何设计一个深度学习项目
作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 我的博客:请点击这里 目前,有很多关于深度学习的线上和线下技术资源.每天,技术人员都会发表很多的新的论文 ...
- 3天,我用Python手撕了一个深度学习框架!
人工智能如何学习?要看哪些书? 经常听到有粉丝问到这类的问题,其实,要想学习人工智能,你需要先搞懂什么是人工智能. 01 人工智能概念的提出 人工智能(Artificial Intelligence ...
- 手把手实现一个深度学习框架(附代码实现)
编辑丨极市平台 转载 | 深度学习初学者 来源丨https://zhuanlan.zhihu.com/p/78713744 当前深度学习框架越来越成熟,对于使用者而言封装程度越来越高,好处就是现在可以 ...
- 手把手教你如何自己设计实现一个深度学习框架(附代码实现)
作者丨王桂波@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/78713744 编辑丨极市平台 导读 本文首先从深度学习的流程开始分析,对神经网络中的关键组件抽象,确定 ...
- 【一文看懂】深度神经网络加速和压缩新进展年度报告
郑板桥在<赠君谋父子>一诗中曾写道, "删繁就简三秋树,领异标新二月花." 这句诗讲的是,在画作最易流于枝蔓的兰竹时,要去掉其繁杂使之趋于简明如"三秋之树&q ...
最新文章
- Centos6.5升级系统自带gcc4.4.7到gcc4.8.0
- android工程混淆和反编译
- 配置高可用的Hadoop平台
- python入门指南 许半仙 txt-小九 第7章(1/1)_新笔趣阁
- github上关于机器学习的awesome项目(资源大全)
- mongodb语法与spring实现
- afx_msg函数意思
- 2018年海南计算机职称考试,海南省2018年全国计算机等级考试报名时间
- 关于Mac重启之后壁纸总是恢复默认的解决办法
- 高通驱动一键安装_一键重装神器,装系统简单的超乎想象!
- python魔法函数(二)之__getitem__、__len__、__iter__
- N---Exponentiation
- linux dstat io,linux dstat工具
- pytorch Resnet 网络结构
- FYI | OHBM/Brain 会议投稿指北
- 如何在工作中设定和使用 SMART 目标
- 数栈人:从青铜到星耀,10年大数据人的奋战晋级之路
- 多个数据表格合并计算计算机,多个excel表格某个数据合计-Excel怎么才能快速将几个表的某一列数据求和在一个......
- 金融计算机怎么调成链式,FRM金融计算器使用方法
- 计算机网络—— DNS和CDN那些事