[英]Is there cudnnLSTM or cudNNGRU alternative in tensorflow 2.0
[英]How to add recurrent dropout to CuDNNGRU or CuDNNLSTM in Keras
通過將其值作為層的參數傳遞,可以將循環丟失應用於 Keras 中的基本 LSTM 或 GRU 層。
CuDNNLSTM 和 CuDNNGRU 是與 CUDA 兼容的 LSTM 和 GRU 層。 主要優勢是它們在訓練期間的速度提高了 10 倍。 然而,它們缺乏 Keras 中 LSTM 或 GRU 層的一些優點,即傳遞 dropout 或循環 dropout 值的可能性。
雖然我們可以直接在模型中添加 Dropout 層,但似乎我們不能使用 Recurrent Dropout 來做到這一點。
那么我的問題是: How to add recurrent dropout to CuDNNGRU or CuDNNLSTM in Keras?
我不認為我們可以擁有它,因為它甚至在低級別(即 cuDNN)中不受支持。 來自 Keras 的 François Chollet的創造者:
cuDNN RNN ops 中未實現循環丟失。 在 cuDNN 級別。 所以我們不能在 Keras 中擁有它。
cuDNN API 中的 dropout 選項不是 recurrent dropout(與 Keras 中的不同),因此它基本上沒有用(常規 dropout 不適用於 RNN)。
實際上在堆疊式 RNN 中使用這樣的 dropout 會破壞訓練。
您可以使用 kernel_regularizer 和 recurrent_regularizer 來防止過度擬合,我使用的是 L2 正則化器並且我取得了不錯的效果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.