github玩得还是太熟,等熟练了就传到github上去。先在这里简单总结一下整个过程遇到的坑。
1.画蛇添足地给基础数据做不必要的封装
可能还是原来搞J2EE留下的习惯,总想着需求会变化,功能会拓展,居然给特征也做了一层封装,那个时候我满以为输入的特征类型可能不固定。结果这直接导致我在使用minist数据集的时候,一次性读入60000个样本会出现OOM错误。另一个是矩阵运算,我也给封装了一层,现在看来毫无必要。接下来准备用“奥卡姆剃刀”,至少把基础数据不必要的封装都切干净。
2.ujmp的行列序号以0开始
这算一个小错误了,java没有自带的矩阵运算库,只能用了ujmp这个第三方库。调试之初,发现自己有几个地方想当然地以1开始。总之,感觉可能真的要切换到Python了。
3.simoid激活函数求导
这个属于藏得有点深的错误,。这里,虽然求的是z的导数,但实际代入的应该是a的值,因为这个表达式是经过简化的。
4.分类器if条件括号后错误地多打了个“;”
算是低级错误中的低级错误了,让我惊讶的是这样的写法在java语法中居然是允许的。这样写的话,相当于不论满不满足if后的条件,下面中括号的内容都会执行。这个bug还没修正过来的时候,我的正确率一度达到惊人的100%。
如果不算调参,整个过程中发现的问题就是这些。