繁体   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