对于代码复现学习的一些理解||计算机研究生学习笔记||经验分享||深度学习||pytorch||不定期长期更新

代码复习

  对于初学者,一开始接触深度学习代码总是困难的,尤其是对于github上满屏英文、复杂的环境、各种各样的报错,有时候哪怕跟着配套的readme、论文、视频,仍然不能成功跑起来。
在经受了一堆毒打后,笔者也开始有一点自己的理解,这里分享给大家,可能有些不对的地方,希望佬们指正,谢谢!
step1:
  对于网上已经开源的代码,先把它下载下来。github下载慢可以用 码云 https://gitee.com/ ,具体方法网上有很多,一般成熟的深度学习框架不会特别大。把代码都下下来就是一个良好的开始。
step2:
  把它解压好用pycharm打开,然后就得到类似下图的一个东西,也许你并没有看懂。所以你需要打开翻译器,把各个文件名的意思搞清楚。(这一步很重要)然后你就能初步理解它这个模块大概是要干什么了。
在这里插入图片描述
step3:
  深度学习框架一般由这么几个部分组成,数据集(下载、划分、加载),网络模型(一个网络会分成很多个不同的模块),优化器损失(有些框架喜欢放一堆损失),训练(定义迭代、打印参数),测试(计算各项指标),可视化,参数统计,跑分模块,许可证,自述。有一个大的框架后,在把各个部分串起来,可以看看训练文件分别调用了哪些文件。
下图我们可以看出,在nets文件中引用了主干网络和一些训练的超参数,在utils文件中引用了损失和参考框、类别。
在这里插入图片描述
step4:
  pip install -r requirements.txt 配置环境,一般库安不上可以考虑切换清华源,网上也有很多方法,这里就不具体阐述了。
  看Readme文件,跟着作者的思路一步步跑,负责的作者会写的很具体,如果遇到很敷衍的,注释又很少的代码,基于学习为目的的初学者可以考虑换 一个框架学习。

其他的补充:
1、现有封装好的框架,一般都是简洁易懂的。首先该关注的不是每个封装好的模块的具体作用,而是根据需要修改的超参数。数据集是很有用的,怎么用好数据集。在网络上提点,不如考虑实际任务,在数据预处理上做一点文章。
2、学会百度谷歌,学会debug,很多错误多在网上找找原因,如果困扰很久的问题,可以把它记录下来,当作一种经验。
3、理解整体的结构,确定自己的目的是为了学习还是单纯的为了跑一个项目,这样关注的模块也不同。
4、学会比较,以YOLO为例,网上用YOLO跑模型的项目有很多,同时把原版下下来与别人改进的版本进行对照,看看哪些模块有修改,哪些模块没有发生变化。


python 包的概念
我们可以发现,在有的框架中,有些文件带点、有些文件不带点。
在这里插入图片描述
其实本质上是文件和python包的区别。
在这里插入图片描述
为什么会有这种区别呢?简单理解就是,python包里的文件用于引用,一般都是封装好的模块,不需要去改动。
更详细的解释可以看(https://blog.csdn.net/weixin_44588711/article/details/104008413),或者搜一下python package这个概念。
本质上是一个小知识点,今天遇到了就把记录下来。


初学者复现的话,最好先挑选比较成熟的框架,可以参考star数和更新时间。在复现前先看看README.md文件,或者搜一下网上的教程、注释(常见深度学习框架一般都有教程),这比自己慢慢debug测试要来的快很多。
另外,如果自己修改模块的话,自己要有一个测试的思路,可以尝试小样本的测试。不赶时间的话就慢慢跑、慢慢debug,迟早能找到相应功能函数。一般函数有作者自定义的、也有python包导入的。
大致就是:寻找→修改→测试。在别人的轮子上改个螺丝钉先。
在这个过程中,写日志、备注很重要,不至于一段时间前的代码就成了废品,不然跑的次数多了,容易自己都不知道自己之前跑的是什么。


复现一个新的代码时候,可能无法避免的会遇到一些注释很少的代码,甚至没有注释。在没有办法的情况下,复现的思路基本如下:
1、先理清楚大框架,即每个py文件大概是干嘛的,这个一般可以通过阅读代码名字弄清楚,然后尝试一下每个py文件的顺序,一般为数据处理、增强->训练->测试。
2、然后拿小样本(部分数据集),放入代码中,开始debug,弄清楚每个模块之间跑的顺序,弄懂作者写的每个模块的大致功能,这一步不需要弄懂很小的细节。这里的模块可以理解成函数或者方法,同样有时候通过读英文名称也懂。
3、拿笔画一画流程图,理清每个模块的关系,这样完整跑通一个流程,就大概懂每个代码的作用,就可以着手改一改了。


搭建自己的network可以看这篇博文

https://blog.csdn.net/weixin_45638136/article/details/131226448

  • 44
    点赞
  • 219
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
GitHub代码复现是指在GitHub上找到一个感兴趣或有用的开源代码项目,并通过阅读代码、运行代码并进行修改来重新实现或再次创建整个项目。 首先,需要在GitHub上搜索并找到目标项目。可以通过GitHub的搜索功能,输入关键词、项目名称、描述等来筛选出符合条件的项目。选择一个代码质量好、维护活跃的项目会更有保障。 一旦找到了目标项目,就可以clone(克隆)该项目到本地。可以使用git命令行或者通过GitHub Desktop等工具进行操作。克隆项目后,就可以在本地对代码进行修改、调试、定制等。 接下来,对项目进行配置和安装依赖。一般来说,项目中会有一个readme文件或者其他文档来指导配置环境和安装所需的依赖包。根据项目要求进行配置和安装。 然后,就可以运行项目了。根据项目的要求,可能需要提供一些参数或者数据集。根据项目的文档,在终端或者IDE中运行相应的命令或者程序。 当项目运行成功后,就可以根据自己的需求对代码进行修改和优化。可以根据项目的架构和实现逻辑进行更改,添加新的功能,或者提升代码的性能等。 最后,如果对项目的改进比较显著,可以考虑提交自己的贡献给项目的维护者。可以通过Fork项目、修改代码、提交Pull Request等方式向项目提交自己的改动。项目维护者会进行代码审查,并决定是否接受你的改动。 总之,GitHub代码复现是一个学习和交流的过程。通过复现别人的代码,可以提升自己的编程能力,了解项目的实现细节,还可以与其他开发者交流、合作,共同提高。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值