张量(Tensor)对象,数组的衍生概念
Numpy中Array提供了基础功能, 其数据结构本身不支持GPU运行,无法应对工业场景中复杂神经网络背后的大规模数值运算.
1. Tensor基本创建和类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210709224117196.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
整数型的数组默认创建整型int32, 张量默认创建长整型int64
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210711201055594.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
创建浮点型数组时,张量默认是float32(单精度浮点型), 而Array则默认是float64(双精度浮点型)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210711201835303.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
布尔型
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210711202216734.png)
创建Int16整型张量
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210711202759831.png)
复数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210711202707332.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
2. 张量类型的转化
隐式转化
和Numpy中array相同,当张量各元素属于不同类型时,系统自动进行隐式转化.
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210711203703232.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
转化方法
下面的都是方法,并没有改变t本身的数值类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210711204454487.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
3. 张量的维度和形变
向量是一维数组, 矩阵是二维数组,在张量中,我们还可以定义更高维度的数组
创建高维张量
用简单序列创建一维数组 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210711205300168.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
另外两个常用的函数/方法,查看张量的形状
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210711205741978.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
用序列的list创建二维数组
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021071121104559.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
"零"维张量 目前可以把零维张量视为拥有张量属性的单独一个数.(张量可以存在GPU上,但Python原生的数值型对象不行.) Python中单独一个数是Scalars(标量)零维的张量则是Tensor.
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712120617430.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
高维张量 一般三维及以上. 常见为三维张量,可以理解为二维数组和矩阵的集合
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712122643448.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
张量的形变
张量座位数字的结构化集合,其结构也是可以根据实际情况灵活调整的
Flatten 拉平,将任意维度张量转化为一维张量
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712123117104.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
reshape 任意变形
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712124158322.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
利用reshape,将t3拉平
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712141114659.png)
4.特殊张量的创建方法
特殊取值的张量创建方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712151336588.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712152010933.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
创建指定形状的数组
根据指定对象的形状进行数值填充,在上述函数后面加_like, 需要注意的是转化前后数据类型保持一致
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021071215251572.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
5. 张量和其他相关类型之间的转化方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021071215522092.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712165843400.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712165906720.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
6. 张量的深copy
等号赋值相当于浅copy, 深copy需要用clone方法
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712170818261.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712170852368.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xhbmRpYW4wNTMx,size_16,color_FFFFFF,t_70)
|