江寒思考了一下,又在网络的最后几个全连接层中,使用了dropout方法。
所谓dropout,就是在前向传导时,以某个概率p,随机忽略部分神经元。
这样做,可以有效地避免过拟合。
在编写池化层时,江寒考虑了一下,使用了重叠的最大池化方法,而没有使用他此前在cnn论文中提到的平均池化。
因为后者有个副作用,容易导致模糊化。
同时,这样做还有另外一些好处。
比如,由于有部分重叠和覆盖,提取出来的特征,往往也会更加丰富……
在编写标准化层的时候,江寒考虑再三,运用了lrn机制,也就是局部响应归一化。
这样做的目的,是让局部神经元的活动,产生某种竞争机制,使得强者愈强、弱者愈弱。
归根结底,是为了提高模型的泛化能力。
为了尽可能加快训练速度,江寒甚至考虑过使用gpu编程。
虽然这个世界的gpu厂商,还没有发明cuda技术,但硬件条件已经完全具备了。
毕竟从理论上来说,能挖矿的显卡,就能用于大数据计算。
只要编写出合适的驱动和代码,就能利用gpu,来进行大规模并行运算,显著地提高神经网络的训练速度。
可惜的是,单个显卡的显存比较有限,也就是说,可能承载不了太大的人工神经网络。
而这个深度cnn网络……
即使最保守的估计,也需要4~5gb的显存。
这样一来,就必须用两块显卡,交下火才行了……
江寒在虚拟空间中忙碌了几十个小时,终于把这个空前巨大的人工神经网络搭建了起来。
当然,今天是没法开始训练了,只能等到明天再说……
江寒想了想,又买了很多空白图纸,以及一些中性笔,开始草拟论文的初稿。
在这次的比赛中,没啥意外的话,自己这个“深度卷积神经网络”,应该能拿到不错的成绩。
到时候,万一有需要的话,现写论文就显得有点不够从容了。
所以江寒决定,今晚就把这个网络的框架,写成论文,保存起来。
等到训练完成,收集到足够的数据,再稍微修改下,就可以找个合适的时机,投出去了……