PyTorch中Tensor的数据类型和运算的使用
在使用tensor时,我们首先要掌握如何使用tensor来定义不同数据类型的变量。tensor时张量的英文,表示多维矩阵,和numpy对应,pytorch中的tensor可以和numpy的ndarray相互转换,唯一不同的是pytorch可以在gpu上运行,而numpy的ndarray只能在cpu上运行。
常用的不同数据类型的tensor,有32位的浮点型torch.floattensor, 64位浮点型 torch.doubletensor, 16位整形torch.shorttensor, 32位整形torch.inttensor和64位整形torch.longtensor
一:tensor的数据类型
1 torch.floattensor:用于生成数据类型为浮点型的tensor,传递给torch.floattensor的参数可以是一个列表,也可以是一个维度值
2:torch.inttensor:用于生成数据类型为整形的tensor,传递给torch.inttensor的参数可以是一个列表,也可以是一个维度值
3:torch.rand:用于生成数据类型为浮点型且维度指定的随机tensor,和在numpy中使用的numpy.rand生成随机数的方法类似,随机生成的浮点数据在0-1区间均匀分布
4:torch.randn:用于生成数据类型为浮点型且维度指定的随机tensor,和在numpy中使用numpy.randn生成随机数的方法类似,随机生成的浮点数的取值满足均值为0,方差为1的正态分布
5:torch.range:用于生成数据类型为浮点型且自定义起始范围和结束范围的tensor,所以传递给torch.range的参数有三个,分别是范围的起始值,范围的结束值和步长,其中,步长用于指定从起始值到结束值得每步得数据间隔
二:tensor的运算
通过对tensor数据类型的变量进行运算,来组合一些简单或者复杂的算法,常用的tensor运算如下。
1.torch.abs:将参数传递到torch.abs后返回输入参数的绝对值作为输出,输入参数必须是一个tensor数据类型的变量。
2.torch.add:将参数传递到torch.add后返回输入参数的求和结果作为输出,输入参数可以全部是tensor数据类型的变量,也可以一个是tensor数据类型的变量,另一个是标量。
3.torch.clamp:对输入参数按照自定义的范围进行裁剪,最后将参数裁剪的结果作为输出。所以输入参数一共有三个,分别是需要进行裁剪的一共三个,分别是需要进行裁剪的tensor数据类型的变量,裁剪的上边界,下边界。过程是,让变量的每个元素分别和上下边界比较,如果小于下边界,该元素就被重写下边界的值,如果大于上边界,该元素就被重写上边界的值。
4.torch.div:将参数传递到torch.div后返回输入参数的求商结果作为输出,同样,参与运算的参数可以全部是tensor数据类型的变量,也可以是tensor数据类型的变量和标量的组合
5.torch.mul:将参数传递到torch.mul后返回输入参数求积的结果作为输出,参与运算的参数可以全部是tensor数据类型的变量,
也可以是tensor数据类型的变量和标量的组合
6.torch.pow:将参数传递到torch.pow后返回输入参数的求幂结果作为输出,参与运算的参数可以全部是tensor数据类型的变量,
也可以是tensor数据类型的变量和标量的组合
就是a的b次方
7.torch.mm:将参数传递到torch.mm后返回输入参数的求积结果作为输出,不过这个求积结果的方式和之前的torch.mul运算方式不一样,toch.mm运用矩阵之间的乘法法则进行计算,所以被传入的参数会被当作矩阵进行处理,参数的维度自然也要满足矩阵乘法的前提条件,即前一个矩阵的行数必须和后一个矩阵的列数相等,否则不能计算。
8.torch.mv:将参数传递到torch.mv后返回输入参数的求积结果作为输出,torch.mv运用矩阵与向量之间的乘法规则进行计算,被传入的第一个参数代表矩阵,第二个参数代表向量,顺序不能颠倒
到此这篇关于pytorch中tensor的数据类型和运算的使用的文章就介绍到这了,更多相关pytorch tensor数据类型和运算内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
smarty模板引擎中内建函数if、elseif和else的使用方法
-
Pytorch 中的optimizer使用说明
-
OpenCV中的新函数connectedComponentsWithStats使用(python和c++实例)
-
Python中的anydbm模版和shelve模版使用指南
-
C#中38个常用运算符的优先级的划分和理解
-
MySQL中聚合函数count的使用和性能优化技巧
-
浅谈JavaScript中的apply/call/bind和this的使用
-
JavaScript和TypeScript中的void的具体使用
-
Python中的re模块介绍和使用
-
sql 中 并集union和union all的使用区别