一、学习目标
- 知道张量和Pytorch中的张量
- 知道Pytorch中如何创建张量
- 知道Pytorch中张量的常见方法
- 知道Pytorch中张量的数据结构
二、张量Tensor
1、什么是张量?
张量(tensor)理论是数学的一个分支学科,在力学中有重要应用。张量这一术语起源于力学,它最初是用来表示弹性介质中各点应力状态的,后来张量理论发展成为力学和物理学的一个有力的数学工具。张量之所以重要,在于它可以满足一切物理定律必须与坐标系的选择无关的特性。张量概念是矢量概念的推广,矢量是一阶张量。张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。
【取自百度百科】
2、什么是Pytorch中的张量?
在PyTorch中,张量Tensor是最基础的运算单位,与NumPy中的NDArray类似。
张量是一个统称,其中包含很多类型:
- 0阶张量:标量、常数,0-D Tensor
- 1阶张量:向量,1-D Tensor
- 2阶张量:矩阵,2-D Tensor
- 3阶张量
- …
- N阶张量
三、Pytorch中创建张量
1、使用python中的列表或者序列创建tensor
import torch
torch.tensor([[1.,-1.],[1.,-1.]])
2、使用numpy中的数组创建tensor
import numpy as np
import torch
torch.tensor(np.array([[1,2,3],[4,5,6]]))
3、使用torch的api创建tensor
- torch.empty(3,4)创建3行4列的空tensor,会用无用的数据进行填充。
- torch.ones([3,4])创建3行4列全为1的tensor。
- torch.zeros([3,4])创建3行4列的全为0的tensor。
- torch.rand([3,4]),创建3行4列的随值的tensor,随机值的区间是[0,1)。
- torch.randint(low=0,high=10,size=[3,4])创建3行4列的随机整数的tensor,随机数的区间是[low,high]。
- torch.randn([3,4])创建3行4列的随机数的tensor,随机值的分布式均值为0,方差为1。
四、Pytorch中tensor的常用方法
1、获取tensor中的数据(当tensor中只有一个元素可用):tensor.item()
2、转化为numpy数组
3、获取形状:tensor.size()
4、形状改变:tensor.view((3,4))。类似numpy中的reshape,是一种浅拷贝,仅仅是形状发生改变。区分转置。
5、获取维数:tensor.dim()
6、获取最大值:tensor.max()
7、转置:tensor.t()\tensor.permute()
8、tensor[1,3]:获取tensor中第一行第三列的值
9、tensor[1,3]=100:对tensor中第一行第三列的位置进行赋值100
10、tensor的切片
五、tensor的数据类型
1、获取tensor的数据类型
- tensor.dtype
2、创建数据的时候指定类型
- torch.tensor(array.dtype)
- torch.ones(array.dtype)
3、类型的修改
- tensor.float()/long()/int()