PyTorch张量常用的创建、变形及数学运算总结
1. 张量(tensor)的创建
1.1 torch.Tensor()与torch.tensor()
torch.Tensor(3,2)
返回一个尺寸为3*2的未初始化的张量
torch.Tensor(data)
返回一个torch.FloatTensor
类型的data
torch.tensor(3, 2)
报错,tensor函数参数必须为一个基本数据类型或引用数据类型数据如整型、浮点型或列表
torch.tensor(data)
返回一个给定数值的张量
区别:
- torch.Tensor()是一个python类,拥有很多可以对数据加以处理的方法,而torch.tensor()是一个函数
- torc.tensor()的参数只能是data而不能是size
- torch.Tensor()相当于torch.FloatTensor()的别名,返回单精度浮点型张量。torch.tensor()自动拷贝传入的数据,在没有给dtype参数时,返回torch.FloatTensor、torch.DoubleTensor、torch.LongTensor三种数据类型张量。给定dtype时返回指定dtype。
PyTorch官方文档对torch.tensor()函数的解释如下
torch.tensor(data, dtype=None, device=None, requires_grad=False) → Tensor
Constructs a tensor with data.
示例代码:
data1 = torch.Tensor([2, 3])
data2 = torch.Tensor(2, 3)
data3 = torch.tensor([2, 3])
print(data1)
print(data2)
print(data3)
# 运行结果
tensor([2., 3.])
tensor([[0., 0., 0.],
[0., 0., 0.]])
tensor([2, 3])
1.2 torch.rand(), torch.ones(), torch.zeros()
rand()
函数用于创建一个指定尺寸的随机矩阵
ones()
函数用于创建一个指定尺寸的元素全为1的矩阵
zeros()
函数用于创建一个指定尺寸的元素全为0的矩阵
示例代码
data4 = torch.rand(3, 2)
data5 = torch.ones(3, 2)
data6 = torch.zeros(3, 2)
print(data4)
print(data5)
print(data6)
# 运行结果
tensor([[0.6134, 0.3304],
[0.6353, 0.1127],
[0.9612, 0.8309]])
tensor([[1., 1.],
[1., 1.],
[1., 1.]])
tensor([[0., 0.],
[0., 0.],
[0., 0.]])
1.3 torch.FloatTensor()、torch.DouleTensor()、torch.cuda.FloatTebsor()等
以下表格列出了PyTorch支持的数据类型及其创建函数
数据类型 | CPU张量 | GPU张量 |
---|---|---|
32位浮点型 | torch.FloatTensor | torch.cuda.FloatTensor |
64位浮点型 | torch.DouleTensor | torch.cuda.FloatTensor |
16位浮点型 | torch.HalfTensor | torch.cuda.HalfTensor |
8位整型(无符号) | torch.ByteTensor | torch.cuda.ByteTensor |
8位整型(有符号) | torch.CharTensor | torch.cuda.CharTensor |
16位整型(有符号) | <