几何代数中定义的张量是基于向量和矩阵的推广,通俗一点来理解,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。
张量
在PyTorch中,张量Tensor是最基础的运算单位,与NumPy中的NDArray类似,张量表示的是一个多维矩阵。不同的是,PyTorch中的Tensor可以运行在GPU上,而NumPy的NDArray只能运行在CPU上。由于Tensor能在GPU上运行,因此大大加快了运算速度。
可以通过rand( )函数生成一个简单的张量,例如生成一个2行3列0-1的随机数Tensor。
通过shape属性或使用size( )函数可以查看Tensor的大小。
查看Tensor大小
在同构的意义下,我们设r为张量的秩或阶,那么,第零阶张量(r = 0)为标量,第一阶张量(r = 1)为向量,第二阶张量(r = 2)为矩阵,第三阶以上(r > 2)的统称为多维张量。
Tensor的常用基本数据类型主要有以下五种:
此外,Tensor的数据类型还可以是byte或chart型。
Tensor基本数据类型
除了使用rand( )函数外,PyTorch中还提供了许多初始化张量的方法,可以类比NumPy中对NDArray的初始化。
randn( ):初始化一个均值为0,方差为1的随机数Tensor。
ones( ):初始化一个全为1的Tensor。
zeros( ):初始化一个全为0的Tensor。
eye( ):初始化一个主对角线为1,其余都为0的Tensor(只能是二阶,即矩阵)。
Tensor初始化
PyTorch对Tensor的操作与NumPy对NDArray的操作非常相似,因此在学习Tensor时可以经常对比NDArray。事实上,它们两者基本就是一致的。
max( )/min( ):沿行或列取最大值/最小值。参数dim=0表示沿列,dim=1表示沿行。返回value(值)和idx(索引)。
max()/min()
sum( ):沿行/列求和。
sum()
基本四则运算。
基本四则运算
add( )与add_( ):以_为结尾的会改变调用值本身。
add( )与add_( )
mm( ):矩阵乘法。
mm( )
使用PyTorch的numpy( )函数将Tensor转换为NDArray。
Tensor转NDArray
使用PyTorch的from_numpy( )函数将NDArray转换为Tensor。
NDArray转Tensor
一般情况下可以使用cuda( )函数将Tensor转移到GPU上运行,当然这步操作需要cuda设备的支持。
将Tensor转移到GPU上运行
联系客服