2016-10-02 79 views
1

我使用tensorflow在我的數據集上訓練一個簡單的雙層RNN。訓練曲線示如下:如何解釋RNN的奇怪訓練曲線?

RNN curve

其中,所述x-axis是(在一個步驟中,使用batch_size數目的樣本來更新網絡參數)的步驟中,y-axis是精度。紅色,綠色和藍色線分別表示訓練集,驗證集和測試集的準確性。看起來訓練曲線並不平坦,並且有一些腐敗的變化。這是合理的嗎?

回答

1

由於您使用的是SGD,所以完全沒問題。一般趨勢是,隨着使用的小型配件數量的增加,準確度會增加,但是,有些小型配件可能與其他大多數小型配件存在顯着「不同」,因此準確度可能會很差。

+0

非常感謝您的回答!在這個實驗中,我只是設置了一個固定的batch_size,比如說30.我試圖用可變的學習率進行實驗。初步實驗表明,在上述實驗中學習速率太大。我會嘗試使用變量batch_sizes進行試驗。 – mining

1

事實上,您的測試和驗證準確性在13和21時刻可怕地下降可疑。例如。 13將測試分數降低到時期1以下。

這意味着您的學習速率可能太大:單個小批量不應導致重量變化量。

+0

非常感謝您的回答!是的,我嘗試了可變學習率,它顯示了上述實驗中的學習率過高。如果學習率設置爲相對較小的值,曲線似乎更平滑,但收斂速度緩慢。所以它需要更多的步驟。另外,我的實驗中的這一步並不意味着你所說的「時代」。上圖中的「x軸」應該有1000的乘數。(對不起,我沒有在問題中指出它)。我有1600個訓練樣本,batch_size = 30,所以一個時期大約有50多個步驟。 – mining

1

您是否嘗試過漸變剪裁,Adam優化器和學習速率衰減? 根據我的經驗,漸變剪裁可以防止爆炸漸變,Adam優化器可以更快地收斂,並且學習速率衰減可以提高泛化能力。

您是否洗過培訓數據?

此外,可視化權重的分佈也有助於調試模型。

+0

嗨,親愛的湘,非常感謝您的寶貴意見和經驗!目前我只使用SGD優化器並調整學習速率,其他參數設置爲默認值並固定。我會按照你以後的建議調查性能。是的,在完成一個時期後,我已經洗牌了培訓數據。 – mining