Tensors(张量)
- 初始化矩阵
>>>import torch
>>>x = torch.Tensor(5, 3) # 构造一个未初始化的5*3的矩阵
>>>y = torch.rand(5, 3) # 构造一个随机初始化的矩阵
>>>x
0.4700 0.7060 0.1975
0.4361 0.3720 0.8543
0.4791 0.7756 0.7938
0.1661 0.8668 0.7498
0.8329 0.4605 0.2987
[torch.FloatTensor of size 5x3]
>>>y
0.5045 0.5987 0.3238
0.2657 0.9729 0.7695
0.5533 0.5797 0.4607
0.5230 0.1054 0.7818
0.4092 0.2977 0.4846
[torch.FloatTensor of size 5x3]
- 输出矩阵的大小
>>>x.size() #查看矩阵的大小
torch.Size([5, 3])
- 两个同形矩阵的相加
语法一:x+y
>>> x+y
0.9745 1.3047 0.5214
0.7018 1.3449 1.6238
1.0325 1.3553 1.2545
0.6891 0.9722 1.5315
1.2421 0.7582 0.7833
[torch.FloatTensor of size 5x3]
语法二:torch.add(x,y)
>>> torch.add(x,y)
0.9745 1.3047 0.5214
0.7018 1.3449 1.6238
1.0325 1.3553 1.2545
0.6891 0.9722 1.5315
1.2421 0.7582 0.7833
[torch.FloatTensor of size 5x3]
- 输出Tensor
result = torch.Tensor(5, 3) # 语法一
torch.add(x, y, out=result) # 语法二,把运算结果储存在result上
>>>result
0.9745 1.3047 0.5214
0.7018 1.3449 1.6238
1.0325 1.3553 1.2545
0.6891 0.9722 1.5315
1.2421 0.7582 0.7833
[torch.FloatTensor of size 5x3]
- 注意:会改变tensor的函数操作会用一个下划线后缀来标示。比如,torch.FloatTensor.abs_()会在原地计算绝对值,并返回改变后的tensor,而tensor.FloatTensor.abs()将会在一个新的tensor中计算结果。
y.add_(x) # 将y与x相加
>>>y
0.9745 1.3047 0.5214
0.7018 1.3449 1.6238
1.0325 1.3553 1.2545
0.6891 0.9722 1.5315
1.2421 0.7582 0.7833
[torch.FloatTensor of size 5x3]
- 一个张量tensor可以从Python的list或序列构建
>>> torch.FloatTensor([[1, 2, 3], [4, 5, 6]])
1 2 3
4 5 6
[torch.FloatTensor of size 2x3]
- 一个空张量tensor可以通过规定其大小来构建
>>> torch.IntTensor(2, 4).zero_()
0 0 0 0
0 0 0 0
[torch.IntTensor of size 2x4]
- 可以用python的索引和切片来获取和修改一个张量tensor中的内容
>>> x = torch.FloatTensor([[1, 2, 3], [4, 5, 6]])
>>> print(x[1][2])
6.0
>>> x[0][1] = 8
>>> print(x)
1 8 3
4 5 6
[torch.FloatTensor of size 2x3]
>>>x[:,1]#部分截取,输出第二列的所有元素
8
5
[torch.FloatTensor of size 2]
参考文献:
[http://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html]
[http://pytorch-cn.readthedocs.io/zh/latest/package_references/Tensor/]