如何解决“RuntimeError: CUDA error: invalid device ordinal”?

Posted

技术标签:

【中文标题】如何解决“RuntimeError: CUDA error: invalid device ordinal”?【英文标题】:How to solve "RuntimeError: CUDA error: invalid device ordinal"? 【发布时间】:2021-01-27 17:19:36 【问题描述】:

我正在尝试运行此代码。我不知道它有什么问题,但是这段代码没有运行。我不知道如何解决这个问题。

import cv2
from facial_emotion_recognition import EmotionRecognition

emotion_detector = EmotionRecognition(device='gpu', gpu_id=1)
camera = cv2.VideoCapture(0)

while True:
    image = camera.read()[1]
    image = emotion_detector.recognise_emotion(image, return_type='BGR')
    cv2.imshow('Camera', image)

    key = cv2.waitKey(1)
    if key == 27:
        break

camera.release()
cv2.destroyAllWindows()

但我收到此错误:

Traceback (most recent call last):
  File "/home/fahim/Documents/Python_projects/Python tutorials/pantech AI Master/Computer_Vision/Day 8 Face emotion recognition/emotion.py", line 4, in <module>
    emotion_detector = EmotionRecognition(device='gpu', gpu_id=1)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/facial_emotion_recognition/facial_emotion_recognition.py", line 25, in __init__
    self.network = NetworkV2(in_c=1, nl=32, out_f=7).to(self.device)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 607, in to
    return self._apply(convert)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 354, in _apply
    module._apply(fn)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 354, in _apply
    module._apply(fn)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 376, in _apply
    param_applied = fn(param)
  File "/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/torch/nn/modules/module.py", line 605, in convert
    return t.to(device, dtype if t.is_floating_point() else None, non_blocking)
RuntimeError: CUDA error: invalid device ordinal

Process finished with exit code 1

这是我的电脑配置: 显卡:NVIDIA GeForce MX130 CPU:英特尔 i5-10210U (8) @ 4.200GHz 请帮我解决这个问题。

【问题讨论】:

【参考方案1】:

尝试改变:

emotion_detector = EmotionRecognition(device='gpu', gpu_id=1)

收件人:

emotion_detector = EmotionRecognition(device='gpu', gpu_id=0)

gpu_id 仅在检测到多于一个 GPU 时才有效,您似乎只有一个 GPU,因此它会引发错误,因为您告诉函数获取 GPU 2(因为我们从 0 开始计数)。

【讨论】:

我一开始就试过了。没用。收到此错误: FileNotFoundError: [Errno 2] No such file or directory: '/home/fahim/anaconda3/envs/Computer_Vision/lib/python3.7/site-packages/facial_emotion_recognition/model/model.pkl' @FahimkamalAhmed,您似乎没有model.pkl 文件。您需要一个模型才能使识别工作。源文件中应该有模型,如果没有尝试重新安装包。 @FahimkamalAhmed 在这种情况下,它确实有效。您刚刚遇到另一个与原始错误无关的错误。 @funie200 是的,你是对的。文件中缺少 model.pkl 文件。我尝试重新安装该库,但每次仍然缺少该文件。所以我从 pypi.org 下载了 tar.z 文件,然后从那里获取 model.pkl 文件并将其粘贴到我的库中。它现在正在工作。现在是凌晨 1 点,我必须说我对我的工作很满意。谢谢大佬。【参考方案2】:

如果不是来自使用emotion_detector = EmotionRecognition(device='gpu', gpu_id=0) 或类似的功能...尝试以下解决方法

就我而言,这是由于我的代码中存在这一行

torch.set_default_tensor_type('torch.cuda.FloatTensor')

【讨论】:

以上是关于如何解决“RuntimeError: CUDA error: invalid device ordinal”?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决包冲突问题

如何解决包冲突问题

如何解决ajax跨域问题

MySQL 的 10048问题,如何解决?

如何解决smartgit的冲突问题

如何解决https传输图片的问题