![](/img/trans.png)
[英]My model.fit and model.evaluate are not working properly and I am getting an error
[英]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 实现的要求是:
activation
==tanh
recurrent_activation
激活 ==sigmoid
recurrent_dropout
辍学 == 0unroll
是False
use_bias
是True
- 输入,如果使用掩码,则严格右填充。
- 在最外层的上下文中启用了急切执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.