研究CNTK(四):ConvNet_MNIST.cntk
可以看出結果為:
Minibatch[1-10]: errs = 0.470% * 10000; ce = 0.01797164 * 10000
Final Results: Minibatch[1-10]: errs = 0.470% * 10000; ce = 0.01797164 * 10000; perplexity = 1.01813410
錯誤僅只有0.47,相當於正確率為99.53%,這個非常高了。
這是採用了三層卷積的效果,迭代了40次,算了挺久的,按MNIST的網站上的公佈最好成績為0.23,共計用了35個卷積層,很難想像這個得算多久。
與之前的代碼幾乎還是相同,不同主要是在model上,它是這樣的:
model = Sequential (
Scale {featScale} :
ConvolutionalLayer {32, (5:5), pad = true} : ReLU :
MaxPoolingLayer {(3:3), stride=(2:2)} :
ConvolutionalLayer {48, (3:3), pad = false} : ReLU :
MaxPoolingLayer {(3:3), stride=(2:2)} :
ConvolutionalLayer {64, (3:3), pad = false} : ReLU :
DenseLayer {96} : Dropout : ReLU :
LinearLayer {labelDim}
)
這個就是經典的代碼了:輸入,歸一化,卷積,池化,卷積,池化,卷積,池化,全連接,輸出。
而且可以注意到在卷積時使用了32個濾波器,更進一步地增強了提取特徵的能力,並且池化時候使用的是(3:3),stride=(2:2)。
