Python 如何将cupy数据转换为PyTorch张量?

Python 如何将cupy数据转换为PyTorch张量?,python,pytorch,cupy,Python,Pytorch,Cupy,最近我了解到CuPy将利用GPU加速深度学习中的计算。但是,在执行以下步骤后,我仍然得到一个无法解决的错误: 我通过https://docs.cupy.dev/en/stable/install.html。其他软件包也已正确安装 原始代码如下所示,在文件A中: 导入h5py 进口火炬 将numpy作为np导入 作为cp导入cupy 从torch.utils.data导入数据集,数据加载器 从torchvision导入变换、UTIL 类cupy_数据集(数据集): 定义初始化(自,文件目录): s

最近我了解到CuPy将利用GPU加速深度学习中的计算。但是,在执行以下步骤后,我仍然得到一个无法解决的错误:

  • 我通过
    https://docs.cupy.dev/en/stable/install.html
    。其他软件包也已正确安装
  • 原始代码如下所示,在文件
    A
    中:
  • 导入h5py
    进口火炬
    将numpy作为np导入
    作为cp导入cupy
    从torch.utils.data导入数据集,数据加载器
    从torchvision导入变换、UTIL
    类cupy_数据集(数据集):
    定义初始化(自,文件目录):
    super(cupy_数据集,self)。_init_()
    data=h5py.File(文件目录)
    self.ms=cp.array(data.get(“ms”))
    self.lms=cp.array(data.get(“lms”))
    self.pan=cp.array(data.get(“pan”))
    self.gt=cp.array(data.get(“gt”))
    self.ms=(self.ms[0:10,:,:,:,:])
    self.lms=(self.lms[0:10,:,:,:,:])
    self.pan=(self.pan[0:10,:,:,:])
    self.gt=(self.gt[0:10,:,:,:,:])
    self.ms=torch.utils.dlpack.from_dlpack(self.ms.toDLpack()).float()
    self.lms=torch.utils.dlpack.from_dlpack(self.lms.toDLpack()).float()
    self.pan=torch.utils.dlpack.from_dlpack(self.pan.toDLpack()).float()
    self.gt=torch.utils.dlpack.from_dlpack(self.gt.toDLpack()).float()
    定义(自我):
    返回透镜(自身gt形状[0])
    def uu getitem uu(self,idx):
    ms=self.ms[idx,:,:,:,:]
    lms=self.lms[idx,:,:,:,:]
    pan=self.pan[idx,:,:,:,:]
    gt=self.gt[idx,:,:,:,:]
    返回ms、lms、pan、gt
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    train_数据集=cupy_WorldView3_数据集(文件目录='/training_数据/train.mat')
    打印(列车数据集.gt.形状)
    
    在文件
    B
    中:

    导入火炬
    进口丘比特
    从{file_A}导入cupy_数据集
    train_数据集=cupy_数据集(文件目录='/training_数据/train.mat')
    gt=列车_数据集.gt
    pan=列车_数据集.pan
    lms=列车_数据集.lms
    ms=列车运行数据集。ms
    打印(类型(gt))
    
  • 文件
    A
    中的结果如下所示:
  • 回溯(最近一次呼叫最后一次):
    文件“{File path}”,第94行,在
    train_数据集=cupy_WorldView3_数据集(文件目录='/training_数据/train.mat')
    文件“{File path}”,第76行,在_init中__
    self.ms=torch.utils.dlpack.from_dlpack(self.ms.toDLpack()).float()
    AttributeError:模块“torch.utils”没有属性“dlpack”
    
    文件
    B
    中的结果如下所示:

    使用后端:pytorch
    回溯(最近一次呼叫最后一次):
    文件“/home/office desktop/.pycharm\u helpers/pydev/pydevd.py”,第1477行,in\u exec
    pydev_imports.execfile(文件、全局、局部)#执行脚本
    文件“/home/office desktop/.pycharm\u helpers/pydev/\u pydev\u imps/\u pydev\u execfile.py”,execfile中第18行
    exec(编译(内容+“\n”,文件,'exec'),全局,loc)
    文件“{File path}”,第6行,在
    train_数据集=cupy_数据集(文件目录='/training_数据/train.mat')
    文件“{File path}”,第76行,在_init中__
    self.ms=torch.utils.dlpack.from_dlpack(self.ms.toDLpack()).float()
    AttributeError:“cupy.core.core.ndarray”对象没有属性“toDLpack”
    进程已完成,退出代码为1
    
    仅供参考,我的基本想法是使用
    DLpack
    作为CuPy和PyTorch张量之间的互连。初始用法和语法可在和中找到

    为什么会这样?先谢谢你。如果您需要任何其他信息,我愿意提供:)