如何解决“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”?的主要内容,如果未能解决你的问题,请参考以下文章