2016-12-31 59 views
0

我一直在運行張量流作爲後端的keras u-net實現。在這個實驗中,我運行了60個時代。損失情節如下所示,我可以假設程序已經收斂了嗎?在我看來,損失沒有顯着變化。損失情況和確定是否收斂的標準

這是與定義優化器和啓動培訓過程相關的代碼。

optimizer = SGD(lr=0.001, momentum=0.9, decay=0.0005, nesterov=False) 
    autoencoder.compile(loss=customized_loss, optimizer=optimizer, metrics= [customized_dice]) 
    nb_epoch = 60 
    batch_size = 32 
    model.fit(imgs_train, imgs_mask_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1,callbacks=[model_checkpoint]) 

enter image description here

+0

這是培訓還是驗證損失?如果驗證,這似乎甚至沒有收斂,你需要運行更長的時間。也請嘗試更高的學習率 –

+0

嗨,我認爲這是訓練損失。我包含了與定義優化器並啓動培訓相關的代碼。如果您有任何意見,請告訴我。謝謝。 – user297850

+0

我們需要知道哪些損失可以幫助您。在我看來,這是您模型中的成本損失。這有助於你確定信心,而不是收斂或準確。您可能有過度擬合,對此限制,您需要繪製培訓和驗證損失,而不是成本。 – Feras

回答

0

它融合 - 初始收斂速度快,那麼它會減慢 - 這是正常的,它可以減緩很多,還是有意義的改善。取決於您網絡中的參數數量和訓練數據量,60個時期可能會或可能不會很長。在您決定收斂之前,您基本上不需要在大量時代中出現下降趨勢。

一個相當不錯的經驗法則可能類似於「自最低損失發生以來的歷元數量」>「曆元總數/ 4」。

另一個問題是它是否過度訓練。你需要看看驗證損失。按住訓練數據的1/10或1/5,並將其用於驗證,當驗證丟失開始持續增加時,則是過度訓練。

相關問題