如何提升自己的实现idea的代码能力
先插一句哈,之后可能会不定期在朋友圈抽奖送几本书【因为公众号没留言功能】,感兴趣的朋友可以加我微信【dasounlp】围观朋友圈哈~~
在知乎看到一个问题:【对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?】
这个问题其实非常常见,有些时候灵光一现,出来个idea,但是在实现的时候,发现自己无从下手,不知如何做起;
出现这种情况的原因就一个:
代码看到少,写得少;
说一个比较极端的情况,如果大家把自己这个方向的所有论文的代码都从头到尾搞得明明白白,清清楚楚;每一行代码都知道在干嘛,输入是什么形式,输出是什么形式;
那么在实现idea的时候,真的是信手拈来的;
当然,这肯定是非常的极端的情况,因为几乎没有人可能把所有论文和代码都搞得这么透彻,时间和精力肯定是不够的;
那么这种情况下,我们怎么做的?
我自己总结了三个步骤:
把你这个方向最基础的论文【挑5篇,无上限】代码扒下来,一步步搞清楚在做什么,然后搞一个思维导图,每天晚上睡觉之前自己复述一遍,确保代码基础操作没问题;
在1这个基础之上,挑选这个方向比较前沿的方向的论文的代码,看核心创新点,看实验细节是怎么操作的,最重要的是去看核心创新点的代码是怎么写的;在这一步,去看关键部分的代码就可以,然后分门别类记录下来,比如这个论文的改进点在attention,这个论文改进点在增加了残差等等,记住,把对应的核心代码也记录下来;
灵光一现,脑子中有了一个创新点,在2的基础上看有没有类似的论文代码,有的话就扒下来,魔改一下,没有的话,依靠1的基础和2的基础自己写出来;
记住,除了第一步你需要从零开始搞清楚代码在干啥,别的时候不需要重头复现,太费时间;
把上面三个步骤总结一下就是,先打好基础,把Pytorch/TF的各种基础的操作和基础模型架构搞清楚,然后追前沿论文,搞定自己感兴趣的前沿论文里面核心创新点对应的代码,然后依靠前两步骤的基础,完成自己的idea的实现;
在第三步中,可以依照自己idea去搜一下相关论文,看有咩有类似代码的实现,也是非常不错的途径;
这个过程中,有个非常重要的问题,就是如何学习相关代码?
神经网络这块的代码一般可以分为三个部分:数据预处理,模型架构,训练+验证;
在数据预处理这块,不同方向的预处理代码一般都不同;自己方向的看一个比较较清晰的代码,之后用的时候就沿用这个处理代码就可以;
在模型架构这块,注意两个东西,一个基础架构怎么写,比如卷积怎么写,dropout放在哪里比较好等等;另一个就是一定要注意输入形式和输出形式,这个非常重要。
训练和验证这块,都是一些常规操作,比如怎么保存最好的模型,学习率和优化器的使用等等;
总之各种骚操作,在看代码的时候理清楚,然后随手记下来;
代码和学习笔记之类的东西最好是分门别类,大概是这个样子:
一个清晰的代码和知识笔记,就是你的武器库,干啥都不误。
最近超累,所以没时间看论文,不过经验文章的分享,也希望大家喜欢,比如上一个文章:如何做到极致的专注
总之,如果觉得写的还行,求点赞,求在看,求转发,求一切。理科生不太会运营,只能寄希望于大家了;