TypeError: can‘t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory

简介: 运行程序,出现报错信息 TypeError: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.。

项目场景:


运行程序,出现报错信息 TypeError: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.。


Traceback (most recent call last):
  File "tools/demo.py", line 97, in <module>
    visualize_result(gallery_img, detections, similarities)
  File "tools/demo.py", line 41, in visualize_result
    (x1, y1), x2 - x1, y2 - y1, fill=False, edgecolor="#4CAF50", linewidth=3.5
  File "/environment/miniconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py", line 2358, in add_patch
    self._update_patch_limits(p)
  File "/environment/miniconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py", line 2381, in _update_patch_limits
    patch_trf = patch.get_transform()
  File "/environment/miniconda3/lib/python3.7/site-packages/matplotlib/patches.py", line 278, in get_transform
    return self.get_patch_transform() + artist.Artist.get_transform(self)
  File "/environment/miniconda3/lib/python3.7/site-packages/matplotlib/patches.py", line 752, in get_patch_transform
    bbox = self.get_bbox()
  File "/environment/miniconda3/lib/python3.7/site-packages/matplotlib/patches.py", line 845, in get_bbox
    return transforms.Bbox.from_extents(x0, y0, x1, y1)
  File "/environment/miniconda3/lib/python3.7/site-packages/matplotlib/transforms.py", line 839, in from_extents
    bbox = Bbox(np.reshape(args, (2, 2)))
  File "<__array_function__ internals>", line 6, in reshape
  File "/home/featurize/work/.local/lib/python3.7/site-packages/numpy/core/fromnumeric.py", line 298, in reshape
    return _wrapfunc(a, 'reshape', newshape, order=order)
  File "/home/featurize/work/.local/lib/python3.7/site-packages/numpy/core/fromnumeric.py", line 54, in _wrapfunc
    return _wrapit(obj, method, *args, **kwds)
  File "/home/featurize/work/.local/lib/python3.7/site-packages/numpy/core/fromnumeric.py", line 43, in _wrapit
    result = getattr(asarray(obj), method)(*args, **kwds)
  File "/home/featurize/work/.local/lib/python3.7/site-packages/torch/tensor.py", line 458, in __array__
    return self.numpy()
TypeError: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.


问题描述


这个问题是由 python 3.7 版本引起的。修改部分 python 源码即可。


根据报错信息,定位到 /home/featurize/work/.local/lib/python3.7/site-packages/torch/tensor.py


解决方案:


将 self.numpy() 改成 self.cpu().numpy(),即找到 tensor.py 的第 458 行

    def __array__(self, dtype=None):
        if dtype is None:
            return self.numpy()
        else:
            return self.numpy().astype(dtype, copy=False)


改成


aea59c76ec1d4202a27ffd96e6ec627d.png

目录
相关文章
|
2月前
|
人工智能 安全 芯片
【通义】AI视界|谷歌 Tensor G5 芯片揭秘:1+5+2 八核 CPU,支持光线追踪
本文由【通义】自动生成,涵盖黄仁勋宣布台积电协助修复Blackwell AI芯片设计缺陷、苹果分阶段推出Apple Intelligence、OpenAI保守派老将辞职、英伟达深化与印度合作推出印地语AI模型,以及谷歌Tensor G5芯片支持光线追踪等最新科技资讯。点击链接或扫描二维码,获取更多精彩内容。
|
4月前
|
TensorFlow 算法框架/工具 Python
【Tensorflow 2】解决'Tensor' object has no attribute 'numpy'
解决'Tensor' object has no attribute 'numpy'
92 3
|
4月前
|
API 网络架构
【Azure 云服务】查看Azure云服务在中国区域的VM型号大小列表(型号编码,定价层,以及CPU, Memory等)
【Azure 云服务】查看Azure云服务在中国区域的VM型号大小列表(型号编码,定价层,以及CPU, Memory等)
|
6月前
|
并行计算 监控 前端开发
函数计算操作报错合集之如何解决报错:RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0!
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
262 2
|
6月前
|
并行计算 异构计算 Python
python代码torch.device("cuda:0" if torch.cuda.is_available() else "cpu")是什么意思?
【6月更文挑战第3天】python代码torch.device("cuda:0" if torch.cuda.is_available() else "cpu")是什么意思?
725 4
|
并行计算 Ubuntu PyTorch
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)(上)
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)
393 0
|
并行计算 Ubuntu PyTorch
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)(下)
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)
238 0
|
PyTorch 算法框架/工具 开发者
RuntimeError: Can‘t call numpy() on Variable that requires grad. Use var.detach().numpy()
出现这个现象的原因是:待转换类型的PyTorch Tensor变量带有梯度,直接将其转换为numpy数据将破坏计算图,因此numpy拒绝进行数据转换,实际上这是对开发者的一种提醒。如果自己在转换数据时不需要保留梯度信息,可以在变量转换之前添加detach()调用。
195 0
|
机器学习/深度学习 人工智能 并行计算
闻其声而知雅意,M1 Mac基于PyTorch(mps/cpu/cuda)的人工智能AI本地语音识别库Whisper(Python3.10)
前文回溯,之前一篇:[含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入)](https://v3u.cn/a_id_260),利用AI技术将文本合成语音,现在反过来,利用开源库Whisper再将语音转回文字,所谓闻其声而知雅意。
闻其声而知雅意,M1 Mac基于PyTorch(mps/cpu/cuda)的人工智能AI本地语音识别库Whisper(Python3.10)
|
并行计算 异构计算
如何将cuda上的变量转到cpu上面?
在这个示例中,我们首先将x张量对象创建在GPU上。然后,我们使用.cpu()方法将其移动到CPU上,并将其分配给一个新的变量x_cpu。现在,我们可以在CPU上使用x_cpu变量并打印它。 请注意,将张量移动到不同的设备(如从GPU到CPU)可能会涉及到数据的复制,因此需要确保不会频繁地在不同的设备之间移动数据以避免性能下降。
1844 0