【问题标题】:How to solve "RuntimeError: CUDA error: invalid device ordinal"?如何解决“RuntimeError: CUDA error: invalid device ordinal”?
【发布时间】:2026-01-04 06:00:02
【问题描述】:

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

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 请帮我解决这个问题。

【问题讨论】:

    标签: python opencv pytorch


    【解决方案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')
    

    【讨论】:

      最近更新 更多