簡體   English   中英

我正在嘗試擬合 CuDNNLSTM 模型,但出現錯誤

[英]I am trying to fit an CuDNNLSTM model and I am getting an error

我正在學習循環神經網絡,我發現了 CuDNNLSTM 層,它比通常的 LSTM 快得多。 所以,我試圖擬合一個 CuDNNLSTM 模型,但唯一的事情是,哪個程序顯示是“Epoch 1”,然后什么都沒有發生,我的內核正在死去(我在 jupyter-notebook 中工作)。 在 jupyer 終端中,我發現了這個:

2022-05-25 22:22:59.693801:我 tensorflow/stream_executor/cuda/cuda_dnn.cc:384] 加載 cuDNN 版本 8100

2022-05-25 22:23:00.149065:E tensorflow/stream_executor/cuda/cuda_driver.cc:1018] 無法同步停止事件:CUDA_ERROR_LAUNCH_FAILED:未指定的啟動失敗

2022-05-25 22:23:00.149218:E tensorflow/stream_executor/gpu/gpu_timer.cc:55] 內部:銷毀 CUDA 事件時出錯:CUDA_ERROR_LAUNCH_FAILED:未指定的啟動失敗

2022-05-25 22:23:00.150008:E tensorflow/stream_executor/gpu/gpu_timer.cc:60] 內部:銷毀 CUDA 事件時出錯:CUDA_ERROR_LAUNCH_FAILED:未指定的啟動失敗

2022-05-25 22:23:00.150355:F tensorflow/stream_executor/cuda/cuda_dnn.cc:217] 檢查失敗:狀態== CUDNN_STATUS_SUCCESS(7 vs. 0)未能設置 cuDNN 流。

我已將 tensorflow-gpu 和兼容的 CuDNN 和 CUDA 安裝到我的 tensorflow 版本中

張量流版本:2.9.0

CUDA 版本:11.2

CuDNN 版本:8.1

我也嘗試過相同的模型,但使用 LSTM 層並且效果很好,但速度仍然很慢,所以我想弄清楚如何使用 CuDNNLSTM 模型。

我的代碼:

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, LSTM
from tensorflow.compat.v1.keras.layers import CuDNNLSTM

mnist = tf.keras.datasets.mnist

(X_train, y_train), (X_test, y_test) = mnist.load_data()

X_train = X_train/255.0
X_test = X_test/255.0

model = Sequential()

model.add(CuDNNLSTM(128, input_shape=(X_train.shape[1:]), return_sequences=True)) 
model.add(Dropout(0.2))
      
model.add(CuDNNLSTM(128))
model.add(Dropout(0.2))
      
model.add(Dense(32, activation="relu"))
model.add(Dropout(0.2))
      
model.add(Dense(10, activation="softmax"))
      
opt = tf.keras.optimizers.Adam(learning_rate=1e-3, decay=1e-5)
      
model.compile(loss="sparse_categorical_crossentropy",
              optimizer=opt,
              metrics=["accuracy"])
      
model.fit(X_train, y_train, epochs=3, validation_data=(X_test, y_test))

如果有人遇到同樣的問題或知道如何解決,我將不勝感激。 預先感謝。

您是否嘗試過使用tanh激活函數? 據我了解,它必須使用它。 詳情如下:

長短期記憶層 - Hochreiter 1997。
請參閱Keras RNN API 指南
有關 RNN API 使用的詳細信息。
基於可用的運行時硬件和約束,這一層
將選擇不同的實現(基於 cuDNN 或純 TensorFlow)
以最大限度地發揮性能。 如果 GPU 可用並且所有
該層的參數滿足 cuDNN 內核的要求
(詳見下文),該層將使用快速 cuDNN 實現。
使用 cuDNN 實現的要求是:

  1. activation == tanh
  2. recurrent_activation激活 == sigmoid
  3. recurrent_dropout輟學 == 0
  4. unrollFalse
  5. use_biasTrue
  6. 輸入,如果使用掩碼,則嚴格右填充。
  7. 在最外層的上下文中啟用了急切執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM