1.cuda.tensor转为numpy

解决:
{TypeError}can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.

设定cuda_tensor是cuda上的数据,转为numpy类代码如下:

np_data = cuda_tensor.detach().cpu().numpy()

在这里插入图片描述
转换为numpy格式后:
在这里插入图片描述

2. tensor转为numpy

设定cpu_tensor是cpu上的数据, 且没有梯度,转为numpy类代码如下:

np_data = cpu_tensor.numpy()

3. numpy转为tensor

import torch
import numpy as np

np_data = np.ones((3, 3))
tensor_1 = torch.tensor(np_data)
tensor_2 = torch.from_numpy(np_data)
tensor_2 += 1

print(f'np_data: \n {np_data}')
print(f'tensor_1: \n {tensor_1}')
print(f'tensor_2: \n {tensor_2}')
print('两者id是否相同:', id(tensor_1) == id(tensor_2))

np_data: 
 [[2. 2. 2.]
 [2. 2. 2.]
 [2. 2. 2.]]
tensor_1: 
 tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)
tensor_2: 
 tensor([[2., 2., 2.],
        [2., 2., 2.],
        [2., 2., 2.]], dtype=torch.float64)
两者id是否相同: False
Logo

欢迎来到FlagOS开发社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐