mnist,notmnist training

mnist precision尝试到97%:

在做stanford mnist提高accuracy作业时候,尝试修改参数的总结,只用了全连接

1.增加了epochs次数, loss,precision都有一定的提高, loss从0.3到0.243, precision从0.89到0.9246, 可是之后再增加epochs却没什么效果。

2.尝试了加了一层中间层,却没有precision任何提高,loss也没减少。后发现

上一层的信号(也就是wx+b算出的结果)要作为下一层的输入,但是这个上一层的信号在输入到下一层之前需要一次激活f = sigmoid(wx+b),因为并不是所有的上一层信号都可以激活下一层,如果所有的上一层信号都可以激活下一层,那么这一层相当于什么都没有做。

3.想着加些非线性,应该能提高, 实际使用了relu: 加入了稀疏性,确实是非线性的,之前认为和非线性关系不大。 效果很显著,网络迅速收敛,loss 达到了0.0117, precision达到了0.9798。这个结果是基于中间层+relu。感觉在最后一层relu不是很合理,实际测试结果也确实如此。

所以,结构是 fully-connected, relu, fully-connected +softmax

神经元个数随意设置的


nmnist precision test dataset到了 95%, train set 99%

使用和mnist一样的结构,precision确实下降了到80%几,数据集难些:

1.尝试使用了Adam optimizer, 收敛速度确实快了, loss也更小了些, precision有一定提高

2.尝试三层网络,直接加了一层全连接+relu,发现loss反而收敛的不好,感觉三层不容易收敛。

3.尝试三层再添加dropout层,没有什么效果,dropout或许对过拟合效果很好,对于提高更好的收敛,没有太大帮助(感觉), 用的时候loss跳得很厉害,猜测这是由于输入分布不稳定导致的,不好收敛。在加入batchnorm后再用,就不跳动了。

4.后增加了batchnorm,帮助收敛(归一化的神奇功效,稳定每层的输入分布),确实提高了不少,训练集直接提高到98,99%, 测试集也在95%以上, 两层网络依旧比三层网络性能好一些,没想出理由。

5.尝试减少每层神经元个数,能保持准确率,训练速度快了很多,但是再减少发现收敛速度就开始降低了。

6.使用了L2正则化, 有效果,在尝试多个超参数值下验证集能达到94.69%,这里是两层网络+relu, 中间层有1024个神经元

7.尝试了四层网络没加batchnorm,测试集精度有93.26,训练集87.3 ? 这并不是过拟合, loss也有0.4,感觉没有收的很好, 还是要batchnorm

8.尝试使用了指数衰减的学习率和四层网络,没有使用batchnorm, 也达到了很好的结果,loss 0.03, traindataset precision99,  testdataset 96%

9.尝试了2层卷积(stride 2)加两层全连接, 没有加别的, 收敛不了。

9.2改用pooling实现stride, 提高了几个百分点性能, 但是loss会起伏,不稳定整个过程。

9.3 加入batchnorm,收敛了

结论

0.1迭代次数增加能提高模型能力,但一定次数后就到瓶颈了。

0.2输入的归一化,是必须的,否则loss就要NA了(太大)或者难以收敛都有可能

1.relu是多层网络必需的一部分。

2.多层网络,batchnorm才能让网络更稳定,快速地收敛。

3.dropout使用的效果不明显,在目前使用情况下。然而L2效果不错

4.多层网络用batchnorm能帮助稳定收敛, L2有没有这个效果不知道,否则loss下降不了, 学习率的设置对深层网络影响蛮大的,可以再多测测。


输入用了pickle结构化,快。 加了validset,testset计算accuracy。

保存网络权重,结构, inference时候使用,以及对应api 之后再加上去, L2测试


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值