【问题标题】:I'm getting a confusing cuDNN error when doing predictions on a loaded tensorflow model在加载的张量流模型上进行预测时,我遇到了一个令人困惑的 cuDNN 错误
【发布时间】:2020-06-03 02:07:23
【问题描述】:

我创建了一个 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 怎么会在这个笔记本上不能正常工作,但在另一个笔记本上却没问题。如果它不起作用,我怎么能建立模型?

【问题讨论】:

  • 您在运行 B 之前是否重置或关闭了内核 A?可能和GPU内存有关。
  • 不,我没有,我应该有吗?
  • 默认情况下,TensorFlow 映射几乎所有 GPU (tensorflow.org/guide/gpu#limiting_gpu_memory_growth) 的所有 GPU 内存,因此可能与此有关。
  • 我想就是这样。我一直在另一个笔记本上训练一些东西。训练已经完成,但我认为 GPU 正在坚持一些事情。我必须关闭内核

标签: python tensorflow


【解决方案1】:

默认情况下,TensorFlow 会映射几乎所有 GPU (source) 的所有 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 用户,但也许这个答案可以帮助你 (How do I run nvidia-smi on Windows?)。

【讨论】:

    【解决方案2】:
    THIS CODE WORK FOR ME
    

    张量流>=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软件 How we install tensorflow gpu

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-12
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      相关资源
      最近更新 更多