神經網路隱藏層節點數最少可以是多少個?
很顯然神經網路的節點數越少網路的迭代速度越快,那在保證準確率的前提下隱藏層節點數最少可以是多少個?本文搭建了一個81*n*2的神經網路通過改變n的值測量這個網路的隱藏層節點數量的極小值。
使用的訓練集和測試集是mnist的0和1,經過1/3的池化變成9*9的圖片,每個n值進行200批,每10批測量一次準確率。每批的batchsize是20個用放回取樣,每批迭代1000次。學習率是0.1,沒有偏置,啟用函式用sigmoid,並同時統計每批次的執行時間。
得到的資料
測量的資料表明對於這個81*n*2的網路的隱藏層節點數最小值可以是2,還是挺令人震驚的的,也就是81*2*2的網路就可以執行準確率可以達到93%和81*50*2的網路的效能差不多,但是時間只有81*50*2的0.076,也就是說用81*2*2的網路比81*50*2的網路可以省下92%的時間。
特別是隱藏層的節點數是2000時的耗時是2的耗時的554倍但是81*2000*2的準確率是93.4%和81*2*2的準確率93.1%,也差不多,每次運算多消耗了554倍的時間效能確沒有提升。
一個非常明顯的規律是當隱藏層節點數大於20個以後平均每節點耗時大約都是16.44ms左右的定值,也就是說當節點數大於20個以後網路的耗時基本上可以按照
耗時=n*16.44的公式算出來。
但是網路的效能確沒有增加,
所以可以按照耗時曲線找到拐點附近的點就是用時最少,同時效能也有保證的隱藏層節點數量。比如這道題就是20個節點左右耗時曲線的第5個點。
原始資料