这句话不能简单说对,也不能说错。关键还得看你现在处于哪个阶段。
如果你已经能熟练跑Baseline、看懂论文和代码的对应关系,也能自己修改模型,那代码确实只是工具。但如果你还是研一,连环境都经常配不好,论文里的方法看懂了,却不知道代码在哪、怎么跑、怎么改,那这个阶段就不要谈什么理论创新了。
所以对大多数研一来说,我个人认为应该先把论文→代码→实验这条链路打通。下面分享点我自己的学习路线:
在此之前,我再分享一套自己学习过程中整理的资料,刚好可以用来练这条路线:
- 627篇经典神经网络及其变体论文+代码,按照不同技术路线做了分类,想练哪个方向直接找对应的论文和代码。
- 论文+代码复现记录表+修改/创新检查清单,帮助你从跑Baseline、对照源码,到尝试修改,一步步练,避免论文看了一堆,最后还是不知道从哪里下手。

这样搭配着练,比单纯刷论文更容易真正上手。下面具体说说这4步:
1. 先跑通
找一篇和自己方向相关的论文,先把官方代码跑起来。不用一开始就研究源码,先搞清楚数据怎么进、模型怎么跑、Baseline结果是多少。
2. 再对照
开始把论文和代码放在一起看。论文里的网络结构、模块、损失函数,到代码里分别对应什么?慢慢建立“论文里的方法→代码里的实现”这种对应关系。
3. 然后修改
这一步特别重要。不要刚开始就想着要提出一个全新的理论。可以先尝试一些简单修改,比如换模块、换损失函数、改特征融合方式、调整网络结构……这样哪怕只是一个很小的改动,也是在训练自己的实验能力。
4. 最后再谈创新
当你真的跑过、改过一些模型以后,再去想为什么作者要这么设计?这个模块换一种方式会怎么样?这个方法还能不能放到其他任务?这时候再去找创新点,通常会比凭空想一个理论创新靠谱得多。
前面那份修改/创新检查清单,其实就是用在这一步,先把能改的地方系统过一遍,再根据实验结果判断哪些方向值得继续深挖。
总结一下
研一不是代码和理论二选一,而是先用代码把理论落下来,再从实验里反过来找问题。至于导师说的“理论创新很重要”,当然没错。
但对研一来说,很多时候连实验都没真正做过,很难知道一个所谓的创新到底有没有意义。这种情况就得先动手。论文看多了,代码跑多了,实验改多了,很多真正值得研究的问题,自然就会自己冒出来。