
使用 CNN,為手寫圖片建立模型
|
205
.layer(5, new OutputLayer
.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD)
.nOut(outputNum)
.activation(Activation.SOFTMAX)
.build())
這個輸出層採用了一個負對數可能性損失函數(這是一般 softmax 輸出層常見的做法),
而輸出單元的數量,就等於我們要進行分類或給予標籤的數量。
CNN 的訓練
現在我們已建立了一個 LeNet 卷積模型架構,接下來就可以初始化
MultiLayerNetwork
物
件,以我們的輸入資料集進行訓練了。下面的程式碼顯示的就是如何從前一節的網路
中,取得配置與設定配置的方法:
MultiLayerNetwork model = new MultiLayerNetwork(conf);
model.init();
模型配置好之後,就可以運用輸入 MNIST 資料集,根據所要進行的 epoch 階段數量進
行訓練,做法如下:
log.info("Train model....");
model.setListeners(new ScoreIterationListener(1));
for( int i=0; i<nEpochs; i++ ) {
model.fit(mnistTrain);
log.info("*** Completed epoch {} ***", i);
log.info("Evaluate ...