1.安装cupy
查看cuda版本
cuda=11.1
pip3 install cupy-cuda111 -i https://mirrors.aliyun.com/pypi/simple/
2.将在gpu上的<torch.Tensor>数据类型转化成numpy,并放于cpu上
f_cls_sthree=f_cls_sthree.cpu().detach().numpy() f_cls_tthree = f_cls_tthree.cpu().detach().numpy() #转化成cupy.ndarray f_cls_sthree = cp.asarray(f_cls_sthree) f_cls_tthree = cp.asarray(f_cls_tthree)
3.将np改成cp
def compute_kernel_bias(vecs): """计算kernel和bias vecs.shape = [num_samples, embedding_size], 最后的变换:y = (x + bias).dot(kernel) """ mu = vecs.mean(axis=0, keepdims=True) cov = cp.cov(vecs.T) u, s, vh = cp.linalg.svd(cov) W = np.dot(u, cp.diag(1 / cp.sqrt(s))) return W, -mu def transform_and_normalize(vecs, kernel=None, bias=None): """应用变换,然后标准化 """ if not (kernel is None or bias is None): vecs = (vecs + bias).dot(kernel) return vecs / (vecs**2).sum(axis=1, keepdims=True)**0.5
4.将数据重新放入gpu
s_data = torch.tensor(s_data).to(torch.float32).to("cuda") t_data = torch.tensor(t_data).to(torch.float32).to("cuda")