最近我了解到CuPy将利用GPU加速深度学习中的计算。但是,在执行以下步骤后,我仍然得到一个无法解决的错误:
https://docs.cupy.dev/en/stable/install.html
正确安装了CuPy。其他软件包也已正确安装李>A
中:import h5py
import torch
import numpy as np
import cupy as cp
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms, utils
class cupy_Dataset(Dataset):
def __init__(self, file_dir):
super(cupy_Dataset, self).__init__()
data = h5py.File(file_dir)
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()
def __len__(self):
return len(self.gt.shape[0])
def __getitem__(self, idx):
ms = self.ms[idx, :, :, :]
lms = self.lms[idx, :, :, :]
pan = self.pan[idx, :, :, :]
gt = self.gt[idx, :, :, :]
return ms, lms, pan, gt
if __name__ == '__main__':
train_dataset = cupy_WorldView3_Dataset(file_dir='./training_data/train.mat')
print(train_dataset.gt.shape)
在文件B
中:
import torch
import cupy
from {file_A} import cupy_Dataset
train_dataset = cupy_Dataset(file_dir='./training_data/train.mat')
gt = train_dataset.gt
pan = train_dataset.pan
lms = train_dataset.lms
ms = train_dataset.ms
print(type(gt))
A
中的结果如下所示:Traceback (most recent call last):
File "{file path}", line 94, in <module>
train_dataset = cupy_WorldView3_Dataset(file_dir='./training_data/train.mat')
File "{file path}", line 76, in __init__
self.ms = torch.utils.dlpack.from_dlpack(self.ms.toDLpack()).float()
AttributeError: module 'torch.utils' has no attribute 'dlpack'
文件B
中的结果如下所示:
Using backend: pytorch
Traceback (most recent call last):
File "/home/office-desktop/.pycharm_helpers/pydev/pydevd.py", line 1477, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "/home/office-desktop/.pycharm_helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "{file path}", line 6, in <module>
train_dataset = cupy_Dataset(file_dir='./training_data/train.mat')
File "{file path}", line 76, in __init__
self.ms = torch.utils.dlpack.from_dlpack(self.ms.toDLpack()).float()
AttributeError: 'cupy.core.core.ndarray' object has no attribute 'toDLpack'
Process finished with exit code 1
仅供参考,我的基本思想是使用DLpack
作为CuPy和PyTorch张量之间的互连。初始用法和语法可以在https://docs.cupy.dev/en/stable/reference/interoperability.html和https://pytorch.org/docs/stable/dlpack.html中找到
为什么会这样?先谢谢你。如果您需要任何其他信息,我愿意提供:)
目前没有回答
相关问题 更多 >
编程相关推荐