主要使用 numpy() 和 from_numpy 实现 Tensor 和 NumPy的数据转换
关于是否共享内存,总结下
NumPy转Tensor | 共享内存 | torch.from_numpy() |
不共享内存 | torch.tensor() | |
Tensor转NumPy | 共享内存 | Tensor.numpy() |
不共享内存 | Tensor.clone().numpy() |
代码
import numpy as np
import torch
# 例1、NumPy数组转成Tensor, from_numpy(),共享内存
a = np.array([1, 2, 3, 4, 5])
b = torch.from_numpy(a)
print(a, b)
a += 1
print(a, b) # 相同,说明共享内存
print()
# 例2、NumPy数组转成Tensor, tensor(),不共享内存
a = np.array([1, 2, 3, 4, 5])
b = torch.tensor(a)
print(a, b)
a += 1
print(a, b) # 不相同,说明不共享内存
print()
# 例3、Tensor转成NumPy数组, numpy(),共享内存
a = torch.tensor([1, 2, 3, 4, 5])
b = a.numpy()
print(a, b)
a += 1
print(a, b) # 相同,说明共享内存
print()
# 例4、Tensor转成NumPy数组, clone(),不共享内存
a = torch.tensor([1, 2, 3, 4, 5])
b = a.clone().numpy()
print(a, b)
a += 1
print(a, b) # 不相同,说明不共享内存
运行结果
[1 2 3 4 5] tensor([1, 2, 3, 4, 5])
[2 3 4 5 6] tensor([2, 3, 4, 5, 6])
[1 2 3 4 5] tensor([1, 2, 3, 4, 5])
[2 3 4 5 6] tensor([1, 2, 3, 4, 5])
tensor([1, 2, 3, 4, 5]) [1 2 3 4 5]
tensor([2, 3, 4, 5, 6]) [2 3 4 5 6]
tensor([1, 2, 3, 4, 5]) [1 2 3 4 5]
tensor([2, 3, 4, 5, 6]) [1 2 3 4 5]
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏