tensor提供GPU计算和自由梯度
import torch
#然后我们创建⼀一个5x3的未初始化的 Tensor
x = torch.empty(5, 3)
print(x)
#结果
tensor([[1.0469e-38, 9.3674e-39, 9.9184e-39],
[8.7245e-39, 9.2755e-39, 8.9082e-39],
[9.9184e-39, 8.4490e-39, 9.6429e-39],
[1.0653e-38, 1.0469e-38, 4.2246e-39],
[1.0378e-38, 9.6429e-39, 9.2755e-39]])
#创建⼀一个5x3的随机初始化的 Tensor
x = torch.rand(5, 3)
print(x)
#结果
tensor([[0.8418, 0.2582, 0.4933],
[0.6190, 0.2498, 0.7388],
[0.6290, 0.5832, 0.4330],
[0.0609, 0.6176, 0.6520],
[0.1333, 0.3050, 0.5537]])
#直接根据数据创建Tensor
x = torch.tensor([5.5, 3])
print(x)
#结果
tensor([5.5000, 3.0000])
通过现有的 Tensor 来创建,此⽅方法会默认重⽤用输⼊入 Tensor 的⼀一些属性,例例如数据类型,除⾮非 ⾃自定义数据类型。
我们可以通过 shape 或者 size() 来获取 Tensor 的形状:
x = torch.randn_like(x, dtype=torch.float) # 指定新的数据类型
print(x)
print(x.size())
print(x.shape)
注意:返回的torch.Size其实就是⼀一个tuple, ⽀支持所有tuple的操作。
Tensor的常见用法
#基础构造函数
a=torch.Tensor(3,5)
print(a)
#类似np,array的构造函数
scalar = torch.tensor(3.14159)
vector = torch.tensor([1, 2])
print(scalar)
print(vector)
#全1Tensor
x = x.new_ones(5, 3, dtype=torch.float64) # 返回的tensor默认具有相同的 torch.dtype和torch.device
print(x)
#全0Tensor
x = x.new_zeros(5, 3, dtype=torch.float64) # 返回的tensor默认具有相同的 torch.dtype和torch.device
print(x)
#对⻆角线为1,其他为0
x = torch.eye(3, 3, dtype=torch.float64) # 返回的tensor默认具有相同的 torch.dtype和torch.device
print(x)
#arange(s,e,step) 从s到e,步⻓长为step
a=torch.arange(1,6,2)
print(a)
#linspace(s,e,steps) 从s到e,均匀切分成steps份
lis=torch.linspace(1,6,2)
print(lis)
#均匀/标准分布
r=torch.randn(1,5)
print(r)
# mean:张量 std: 张量
mean = torch.arange(1, 5, dtype=torch.float)
std = torch.arange(1, 5, dtype=torch.float)
t_normal = torch.normal(mean, std)
print("t_normal是\n",t_normal)
# mean:标量 std: 标量
t_normal = torch.normal(0., 1., size=(5,))
print("torch.normal(0., 1., size=5,))输出\n",t_normal)
# mean:标量 std: 标量
t_normal = torch.normal(0., 1., size=(5,))
print("torch.normal(0., 1., size=5,))输出\n",t_normal)
#随机排列列
ra=torch.randperm(5)
print(ra)