计算神经网络隐藏层节点数极小值

神经网络的隐藏层的节点数越少网络的速度越快,那么神经网络的隐藏层的节点数是否有一个可以保证性能的极小值,本文用mnist数据集做了实验。

首先制作一个784*n*2的神经网络,用于测试0-9中的任意两个数的隐藏层的极小值。后经实验证明0-9中任意两个数的784*n*2的神经网络的隐藏层的极小值都是2,也就是说784*2*2的神经网络可以区分从0-9的任意两个数的组合。


比如这组数据,表明可以用784*2*2的网络来区分5和8,0.91是可以达到的准确率,统计方法是当准确率>0.98时停止,或者取几次计算得到的最大值,5-8这个结果0.91,表明mnist的5和8的图片看起来很像,相比较其他数字的组合特征要模糊一些。

由此很容易推算如果计算0,1,2三个数的784*n*3的神经网络的隐藏层的节点数的极小值一定是一个小于等于6的数,经实测这个数是4.说明0-1,0-2,1-2这几组神经网络的特征有重叠。

用实验数据去验证这个方法

测试集4,是0,1,2,3

比如制作一个784*2*4的神经网络用来区分mnist的0,1,2,3可能达到的最大值是53.07,当n=9时,准确率可以达到90.56,这个不是最大值,只是可以达到的值。或许有n<9的点也可以达到>90%的准确率。784*9*4只是可能的最小网络,是理论最小值的9/(4*3)*2/2 =75%,

同样784*n*5网络测得的隐藏层节点数的可能最小值是15,是理论值的75%。

用这种方法估算784*n*6的网络的隐藏层节点数的最小值应该小于等于30个,实测值是16个,是理论值的53%。

所以一个神经网络的任意两个测试元素的隐藏层的极小值的平均值是a,目标函数的数量是y个,那这个神经网络的隐藏层节点数的极小值是一个小于等于

y*(y-1)*a/2的值.

实验数据784*n*3,784*n*4,784*n*5,784*n*6的n的极小值



实验测量0-9中任意两组数据的784*n*2的神经网络的隐藏层的极小值






猜你喜欢

转载自blog.csdn.net/georgesale/article/details/80315628