江东的笔记

Be overcome difficulties is victory

0%

Pytorch中Tensor的创建

创建Tensor的几种方式

创建Tensor

创建一个5行3列未初始化的tensor

1
2
x = torch.empty(5, 3)
print(x)

输出:

1
2
3
4
5
tensor([[1.0194e-38, 1.0469e-38, 1.0010e-38],
[8.9081e-39, 8.9082e-39, 5.9694e-39],
[8.9082e-39, 1.0194e-38, 9.1837e-39],
[4.6837e-39, 9.2755e-39, 1.0837e-38],
[8.4490e-39, 1.1112e-38, 1.0194e-38]])

创建一个5行3列随机初始化的tensor:

1
2
x = torch.rand(5, 3)
print(x)
1
2
3
4
5
tensor([[0.5911, 0.9191, 0.9826],
[0.4801, 0.1648, 0.8578],
[0.9937, 0.8051, 0.6952],
[0.9682, 0.1975, 0.1151],
[0.2434, 0.2917, 0.7866]])

创建Tensor还可以指定数据类型:创建一个5行3列的类型为long的全0数据

1
2
x = torch.zeros(5, 3, dtype=torch.long)
print(x)
1
2
3
4
5
tensor([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])

直接输入数据进行创建tensor:

1
2
x = torch.tensor([1,2,3])
print(x)
1
tensor([1, 2, 3])

根据现有的tensor创建新的tensor:

1
2
x = torch.randn_like(x,dtype = torch.float64)
x
1
2
3
4
5
tensor([[-0.6669,  0.5308,  1.5981],
[ 1.2061, 0.6624, -0.4535],
[-0.5667, -0.8755, -2.1078],
[-3.0560, -0.6035, 0.7990],
[-0.3979, -1.3582, -0.8427]], dtype=torch.float64)

2根据numpy创建新的tensor:

1
2
3
4
# tensor转化为array
a = torch.ones(5,3)
b = a.numpy()
b
1
2
3
4
5
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]], dtype=float32)
1
2
3
# 将array转化为tensor
x = torch.from_numpy(b)
x
1
2
3
4
5
tensor([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])

不过要注意的是:无论是array转化为tensor,还是tensor转化为array,他们都是和原来的数据共享内存的,例如:

1
2
3
b+=1
print(b)
print(x)
1
2
3
4
5
6
7
8
9
10
11
[[2. 2. 2.]
[2. 2. 2.]
[2. 2. 2.]
[2. 2. 2.]
[2. 2. 2.]]
tensor([[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.]])
# b的数值发生变化,x的数值也发生变化,需要注意

更多详情请查看官方文档
喜欢文章可以点赞收藏,欢迎关注,如有错误请指正!