1、dropout是神經網絡中最有效的正則化方法;
2、傳統的dropout在rnn中效果不是很好;dropout在rnn中使用的效果不是很好,因爲rnn有放大噪音的功能,所以會反過來傷害模型的學習能力;
3、在rnn中使用dropout要放在時間步的連接上,即cell與cell之間傳遞,而不是神經元;對於rnn的部分不進行dropout,也就是說從t-1時候的狀態傳遞到t時刻進行計算時,這個中間不進行memory的dropout;僅在同一個t時刻中,多層cell之間傳遞信息的時候進行dropout
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
第一個dropout是x和hidden之間的dropout,第二個是hidden-hidden之間的dropout
在tensorflow裏面有
第三個是層-層之間的dropout
model.add(Embedding(top_words, embedding_vecor_length, input_length=max_review_length))
model.add(Dropout(0.2))
model.add(LSTM(100))
model.add(Dropout(0.2))