猿问

我在加载的张量流模型上进行预测时遇到了令人困惑的cuDNN错误

我创建了一个 ResNet 模型并保存了它,但是当尝试在另一个笔记本中加载后运行预测时,我收到了一堆错误。


假设我有笔记本A和B。在笔记本A中,我创建了一个名为resnet_model的模型。我可以运行预测,一切都很好。我像这样保存了模型


resnet_model.save(os.path.join(DATAPATH,"res1_network.h5"))

然后,我将模型加载到笔记本 A 中


loaded_model = load_model(os.path.join(DATAPATH,"res1_network.h5"))

我对它进行预测,它与以前完全相同。现在,如果我转到笔记本B并加载模型并尝试像这样预测


res1_model = load_model(os.path.join(DATAPATH,"res1_network.h5"))

res1_model.predict(pred_list, verbose=1)

我收到一系列错误


UnknownError:  Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

     [[node model_2/conv2d/Conv2D (defined at C:\Users\Dave\Miniconda3\envs\tensorflow\lib\site-packages\tensorflow_core\python\framework\ops.py:1751) ]] [Op:__inference_distributed_function_23018]


Function call stack:

distributed_function

cuDNN怎么可能在这个笔记本中不能正常工作,但在另一个笔记本中很好。如果它不起作用,我怎么能构建模型呢?


尚方宝剑之说
浏览 100回答 1
1回答

慕雪6442864

默认情况下,TensorFlow映射了所有GPU(源)的几乎所有GPU内存,因此可能与此相关。您可以尝试重置笔记本 A 的内核以在运行笔记本 B 之前释放该内存。或者,您可以设置该选项以仅在需要时分配更多 GPU 内存:allow_growthtf_config=tf.ConfigProto()tf_config.gpu_options.allow_growth=Truesess = tf.Session(config=tf_config)K.set_session(sess)当然,这取决于您同时运行的会话数量,总GPU内存,模型大小等。要检查当前正在使用的内存量,可以使用 。我不是Windows用户,但也许这个答案可以帮助你(我如何在Windows上运行nvidia-smi?)。nvidia-smi
随时随地看视频慕课网APP

相关分类

Python
我要回答