Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python I';在对加载的tensorflow模型进行预测时,我遇到了一个令人困惑的cuDNN错误_Python_Tensorflow - Fatal编程技术网

Python I';在对加载的tensorflow模型进行预测时,我遇到了一个令人困惑的cuDNN错误

Python I';在对加载的tensorflow模型进行预测时,我遇到了一个令人困惑的cuDNN错误,python,tensorflow,Python,Tensorflow,我创建了一个ResNet模型并保存了它,但是在加载到另一个笔记本后尝试运行预测时,我得到了一系列错误 假设我有笔记本A和B。在笔记本A中,我创建了一个名为resnet_model的模型。我可以做预测,一切都很好。我这样保存了模型 resnet_model.save(os.path.join(DATAPATH,"res1_network.h5")) 然后我将模型加载到笔记本中 loaded_model = load_model(os.path.join(DATAPATH,"res1_networ

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

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

resnet_model.save(os.path.join(DATAPATH,"res1_network.h5"))
然后我将模型加载到笔记本中

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怎么可能在这个笔记本上不能正常工作,但在另一个笔记本上却可以。如果模型不起作用,我怎么能构建它呢?

默认情况下,TensorFlow映射了所有GPU()的几乎所有GPU内存,因此它可能与此相关

在运行笔记本B之前,您可以尝试重置笔记本A的内核以释放内存

或者,您可以将
allow_growth
选项设置为仅在需要时分配更多GPU内存:

tf_config=tf.ConfigProto()
tf_config.gpu_options.allow_growth=True
sess = tf.Session(config=tf_config)
K.set_session(sess)
当然,这取决于您同时运行的会话数量、GPU总内存、型号大小等

要检查当前使用的内存量,可以使用
nvidia smi
。我不是Windows用户,但也许这个答案可以帮助您()

tensorflow>=2.0

import tensorflow as tf
config = tf.compat.v1.ConfigProto(gpu_options = 
                     tf.compat.v1.GPUOptions(per_process_gpu_memory_fraction=0.8)
 # device_count = {'GPU': 1}
)
config.gpu_options.allow_growth = True
session = tf.compat.v1.Session(config=config)
tf.compat.v1.keras.backend.set_session(session)
如果这不起作用!!!! 然后,您必须从一开始就重新安装cuda软件

在运行B之前,您是否重置或关闭了内核A?也许它与GPU内存有关。不,我没有,我应该有吗?默认情况下,TensorFlow几乎映射了所有GPU的所有GPU内存(),所以可能它与此有关。我想这就是它。我在另一本笔记本上训练了一些东西。培训已经完成了,但我认为GPU还在坚持。我必须关闭内核
import tensorflow as tf
config = tf.compat.v1.ConfigProto(gpu_options = 
                     tf.compat.v1.GPUOptions(per_process_gpu_memory_fraction=0.8)
 # device_count = {'GPU': 1}
)
config.gpu_options.allow_growth = True
session = tf.compat.v1.Session(config=config)
tf.compat.v1.keras.backend.set_session(session)