2017-08-25 61 views
-1

我用tflearn.DNN建立一個深層神經網絡:降低總損失在深層神經網絡

# Build neural network 
net = tflearn.input_data(shape=[None, 5], name='input') 
net = tflearn.fully_connected(net, 64, activation='sigmoid') 
tflearn.batch_normalization(net) 
net = tflearn.fully_connected(net, 32, activation='sigmoid') 
tflearn.batch_normalization(net) 
net = tflearn.fully_connected(net, 16, activation='sigmoid') 
tflearn.batch_normalization(net) 
net = tflearn.fully_connected(net, 8, activation='sigmoid') 
tflearn.batch_normalization(net) 
# activation needs to be softmax for classification. 
# default loss is cross-entropy and the default metric is accuracy 
# cross-entropy + accuracy = categorical network 
net = tflearn.fully_connected(net, 2, activation='softmax') 
sgd = tflearn.optimizers.SGD(learning_rate=0.01, lr_decay=0.96, decay_step=100) 
net = tflearn.regression(net, optimizer=sgd, loss='categorical_crossentropy') 

model = tflearn.DNN(net, tensorboard_verbose=0) 

我試過很多東西,但所有的時間總損耗爲解決此值:

Training Step: 95 | total loss: 0.68445 | time: 1.436s 
| SGD | epoch: 001 | loss: 0.68445 - acc: 0.5670 | val_loss: 0.68363 - val_acc: 0.5714 -- iter: 9415/9415 

我該怎麼做才能減少總損失並使精度更高?

+0

您已經嘗試了什麼? –

回答

0

可以考慮很多方面來提高網絡性能,包括數據集和網絡。 僅僅通過你粘貼的網絡結構,很難給出一個明確的方法來提高它的準確性,而不需要關於數據集和你想獲得的目標的更多信息。但是,下面是一些有用的做法,可以幫助你調試/提高網絡:

1.關於數據集

  • 是數據集中與扭曲平衡?
  • 獲取更多培訓數據。
  • 如果可能,請添加數據增強。
  • 正常化數據。
  • 特徵工程。

2.關於網絡

  • 是網絡規模過小/大?
  • 通過火車歷史檢查過度配合或不足配件,然後選擇最佳時代大小。
  • 嘗試使用不同的初始化方案初始化權重。
  • 嘗試不同的激活函數,丟失函數,優化器。
  • 更改圖層編號和單位編號。
  • 更改批量大小。
  • 添加丟失圖層。

而對於更深入的分析,下面的文章可能對您有所幫助:

+0

非常感謝。我會從這裏嘗試幾件事 –