最近毕业论文写得差不多了,就打算把一些平时经常会用到知识记录一下,方便以后忘了可以看看。先把本文参考的资料列在前面:
目录
一、数据类型变换
(一)其他类型转换为Tensor类型
创建Tensor有四种方式:
torch.Tensor(data)
:Tensor
类的构造函数;数据类型只能是float32
;不共享内存。torch.tensor(data)
:数据类型根据传入的数据而定,或通过传入dtype
来指定;不共享内存。torch.as_tensor(data)
:根据传入数据或传入dtype
来决定数据类型;共享内存。torch.from_numpy(data)
:仅接受np.array
的输入数据;根据传入数据或传入dtype
来决定数据类型;共享内存。
综上,更推荐使用torch.tensor(data)
和 torch.as_tensor(data)
来创建Tensor。
> data = np.array([1,2,3])
> o1 = torch.Tensor(data)
> o2 = torch.tensor(data)
> o3 = torch.as_tensor(data)
> o4 = torch.from_numpy(data)
> print(o1)
> print(o2)
> print(o3)
> print(o4)
tensor([1., 2., 3.])
tensor([1, 2, 3], dtype=torch.int32)
tensor([1, 2, 3], dtype=torch.int32)
tensor([1, 2, 3], dtype=torch.int32)
> print(o1.dtype)
> print(o2.dtype)
> print(o3.dtype)
> print(o4.dtype)
torch.float32
torch.int32
torch.int32
torch.int32
# 是否共享内存
> print('old:', data)
old: [1 2 3]
> data[0] = 0
> print('new:', data)
new: [0 2 3]
> print(o1)
> print(o2)
> print(o3)
> print(o4)
tensor([1., 2., 3.])
tensor([1, 2, 3], dtype=torch.int32)
tensor([0, 2, 3], dtype=torch.int32)
tensor([0, 2, 3], dtype=torch.int32)
(二)Tensor类型转换为其他类型
- Tensor → Scaler
- Tensor → List
- Tensor → Array
> t = torch.tensor([
[1,2,3],
[4,5,6],
[7,8,9]
], dtype=torch.float32)
> t.mean()
tensor(5.)
# Tensor → Scaler
> t.mean