关于在keras中使用CudnnLSTM图层时发生的错误消息的问题

问题描述 投票:0回答:1

当前状况

1)在深度学习模型结构中使用了CuDNNLSTM层。

2)使用时间序列数据进行训练。每批的时间步长为1,000。 (我认为它很长。)

3)学习是在Google云平台上使用Tesla T4完成的。

4)加载模型在本地PC上,并通过GPU GTX 1060(6gb)]使用它

5)通过本地PC上的模型进行预测,每次不会发生错误,但有时会发生错误。

我在Google上搜索了错误关键字,它似乎是GPU内存问题。

我认为这与GPU内存问题有关的原因

1)通过动态分配内存设置解决了此错误消息的大多数解决方案。

config = tf.ConfigProto()

config.gpu_options.allow_growth = True)

但是它对我不起作用。

2)如果将CuDNNLSTM的权重更改为LSTM模型,则通过模型进行预测的效果很好,不会出现错误。但是,它非常慢。预测速度(model.predict)大约相差10倍。

问题

我想知道这是否是GPU内存问题,即使安装了新的GPU,也可能无法解决。实际上,模型的容量并不大(〜100MB),并且在检查GPU使用情况时,GPU仅占用了1 GB的内存。

我很好奇我将能够确切知道是什么原因引起了问题。

感谢您阅读长文本。

2020-03-11 14:16:53.437923: E tensorflow/stream_executor/cuda/cuda_dnn.cc:82] CUDNN_STATUS_INTERNAL_ERROR

in tensorflow/stream_executor/cuda/cuda_dnn.cc(1477): 'cudnnRNNForwardTraining( cudnn.handle(), rnn_desc.handle(), model_dims.seq_length, input_desc.handles(), input_data.opaque(), input_h_desc.handle(), input_h_data.opaque(), input_c_desc.handle(), input_c_data.opaque(), rnn_desc.params_handle(), params.opaque(), output_desc.handles(), output_data->opaque(), output_h_desc.handle(), output_h_data->opaque(), output_c_desc.handle(), output_c_data->opaque(), workspace.opaque(), workspace.size(), reserve_space.opaque(), reserve_space.size())'

2020-03-11 14:16:53.438538: W tensorflow/core/framework/op_kernel.cc:1401] OP_REQUIRES failed at cudnn_rnn_ops.cc:1224 : Internal: Failed to call ThenRnnForward with model config: [rnn_mode, rnn_input_mode, rnn_direction_mode]: 2, 0, 0 , [num_layers, input_size, num_units, dir_count, seq_length, batch_size]: [1, 38, 16, 1, 1000, 1]

Traceback (most recent call last):

File "D:\Anaconda3_64\envs\gpu\lib\site-packages\keras\engine\training.py", line 1462, in predict

callbacks=callbacks)

File "D:\Anaconda3_64\envs\gpu\lib\site-packages\keras\engine\training_arrays.py", line 324, in predict_loop

batch_outs = f(ins_batch)

File "D:\Anaconda3_64\envs\gpu\lib\site-packages\tensorflow\python\keras\backend.py", line 3076, in __call__

run_metadata=self.run_metadata)

File "D:\Anaconda3_64\envs\gpu\lib\site-packages\tensorflow\python\client\session.py", line 1439, in __call__

run_metadata_ptr)

File "D:\Anaconda3_64\envs\gpu\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 528, in __exit__

c_api.TF_GetCode(self.status.status))

tensorflow.python.framework.errors_impl.InternalError: Failed to call ThenRnnForward with model config: [rnn_mode, rnn_input_mode, rnn_direction_mode]: 2, 0, 0 , [num_layers, input_size, num_units, dir_count, seq_length, batch_size]: [1, 38, 16, 1, 1000, 1]

[[{{node bidirectional_2/CudnnRNN}}]]

[[{{node dense_1/BiasAdd}}]]

当前情况1)在深度学习模型结构中使用了CuDNNLSTM层。 2)用时间序列数据进行训练。每批的时间步长为1,000。 (我认为这很长。)3)学习...

python tensorflow keras cudnn
1个回答
1
投票
  1. 尝试减小批量大小。
© www.soinside.com 2019 - 2024. All rights reserved.