读取原始数据,对其进行处理,转化为神经网络能够处理的张量格式。
刘天阳手指一挥,输入处理模块便如臂指使般被他定位到算法的起点。
之后便是依续递进,众多模块在他的指挥下像是长龙一般拼在后面。
卷积模型构建,激活函数处理,再度卷积,再次激活,多层神经网络的前向传播此时便有了雏形。
不过如此一来模型很容易陷入过拟合的局部最优点,刘天阳一挥手,神经网络中的一些层便变得虚幻起来。
但这并不代表其断开了连接,而是意味着在训练过程中,这些层会随机的丢掉一些数据,减缓算法梯度下降的速度,并带来一定的随机性。
这种被称之为‘丢出’的操作正是代表着人脑中遗忘的功能,虽然做不到像人那般更有针对性,但对于一个可以无限试错的算法来说,足够了。
不过仅仅是学习还不够,刘天阳最终需要提取出整个神经网络中对于使用目标有用的结果。
这個时候需要的就是全连接层,也即池化层,刘天阳思考了一下,一个方块在远方消失,又凭空出现在他的面前。
墨紫色的方块在他的指挥下落在算法的最尾端,这里就是输出结果的地方。
如此一来,整个前向传播神经网络的结构便确定了,下面要做的,就是把它们全部连接起来。
确定训练目标的损失函数,定义!
为算法运行提供动力,更新模型中各个参数的优化函数,定义!
随着前向传播流程的建立,离构建整个算法流程也就只剩下一步之遥了,那就是创建反向传播,闭环整个算法循环模型。
不过相较于前向传播时的诸多模块个组合,以及其中的各种经验之举,反向传播就显得简单许多。
刘天阳手一挥,数根像是电缆一般的管线便从各个损失函数的环节引出,向算法的头部前进。
这些管线在中间不时连接到对应的卷积层上,并链接上其中的权重参数。
如此一来,整个算法便彻底构建完毕,虽说非常简陋,仅仅能实现对阿拉伯数字的辨认,但刘天阳却从其中收获颇丰。
因为刚刚的操作不仅仅是他所学知识的一个输出,更是帮他完整梳理了这些天看到的所有知识。
以往那些只是知道,但却无法理解的东西此时在刘天阳眼中变得具体起来。
为何使用这部分输入,又为何增加这个求和模块,以及最后输出的值到底被谁使用了,当整个流程都清晰以后,之前那些让刘天阳做噩梦的公式此刻顿时变得和蔼可亲起来。
退出这种状态,刘天阳用火热的目光看着面前的显卡,如今有着能量投送器的远程能源输送,这块显卡的显存中正储存着他刚刚搭建好的神经网络模块。
要验证这个算法也很简单,刘天阳拔下电脑上的那块显卡,将手上这块插了上去。
电脑的桌面上瞬间多出一个项目工程,刘天阳点开,里面的代码虽说不是他编写的,但却异常的熟悉。
因为这正是他刚刚一块一块,如搭积木般拼凑出来的神经网络。
浏览整个工程,以往那些需要全局搜索才能知道什么意思的变量此刻对于刘天阳来说全无障碍,整个算法对于他来说,已然了如指掌。