第(1/3)页 两人凑近了屏幕,开始从基础模块往下看。 因为有着非常明确的目标——搭建一个用于图像分类的神经网络,他们直接跳过了闲篇,直奔核心API。 鼠标滚轮不断向下滑动,安静的客厅里只有“咔哒咔哒”的声音。 几分钟后,郭长征突然倒吸了一口凉气。 “等会儿!一航,你把页面往上拉一点。”郭长征指着屏幕。 楚一航照做,页面停在了一个名为“自动微分”的章节。 “卧槽,这也可以?”楚一航脱口而出,声音都提高了八度。 郭长征死死盯着那几行示例代码,脸上的表情极为震撼。 “一航,这文档上写的,是真的吗?”郭长征指着屏幕的手指甚至有点发颤。 “它说,我们只需要定义好前向传播的计算过程,框架就能自动帮我们求导?” 楚一航也是一脸没见过世面的样子,逐字逐句地又看了一遍。 “郭老师,文档上确实是这么写的。它甚至包装好了一个叫梯度下降优化器的东西。” 郭长征猛地拍了一下大腿,发出一声脆响。 要知道,在2009年这个时间节点,要在底层从零开始手写一个神经网络,简直是所有科研人员的噩梦。 噩梦的根源,不在于怎么把数据乘起来,而在于怎么把误差传回去。 这就是反向传播算法。 科研人员需要拿着纸和笔,运用高等数学里的链式法则,对着错综复杂的网络层,一层一层地去推导偏导数公式。 稍微多加一层网络,或者换一个非线性激活函数,几十页的数学草稿纸就白写了,必须全部推倒重来。 哪怕公式推导对了,把它转化成C语言或者C++代码时,稍有一个变量写错,模型就会原地爆炸,梯度直接消失或者数值溢出。 “这等于是把最折磨人的数学推导过程,全给省略了?”郭长征觉得嗓子有点干。 “只要告诉它怎么算出来的结果,它自己就能算出怎么调整参数?” 楚一航看着文档上的示例,只要调用一个简单的函数,所有的梯度就全部计算完毕。 “郭老师,如果这文档没吹牛逼,那我们以后搭模型,就跟搭乐高积木一样简单了。” 两人对视了一眼,兴奋之情溢于言表,在客厅里高兴得连连搓手。 这种把复杂的数学过程完全黑盒化、工程化的设计,对于苦逼的算法研究员来说,简直就是久旱逢甘霖。 他们觉得之前只知道盛夏科技批了算力,居然没静下心来仔细研究这个框架,简直是暴殄天物。 “继续往下看,看看还有什么惊喜。”郭长征现在完全没有了困意。 楚一航滑动鼠标,他们来到了另一个模块区。 “郭老师,你看这个,这里封装了好多高级模块。” 第(1/3)页