当前位置:   article > 正文

[人工智能-深度学习-3]:张量tensor是数组Aarry和矩阵Matrix的泛化_人工智能 张量

人工智能 张量

作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119358616


目录

第1章 张量的定义

1.1 张量在深度学习中的定义

1.2 张量的应用

1.3 为什么需要张量呢?

1.4 张量的本质

第2章 张量的算数运算

第3章 张量的形状运算

3.1 合并

3.2 张量的分解

第4章 点积与乘积

4.1 张量的点积/内积

4.2 张量的乘积/外积 (深度学习用不到)



第1章 张量的定义

1.1 张量在深度学习中的定义

张量(tensor)是多维数组,是向量、矩阵推向更高的维度的一种统一的、抽象的概念。

(1)张量的维度/阶度/维数

 n维/阶向量:1维张量,在该维度包含n个分量,这就是n维向量,n为向量是1维的张量。

1维/阶张量:有一个维度方向,一个方向包含L个元素。L称为长度。

2维/阶张量:有2个维度方向,一个维度方向包含n个元素,一个维度包含m个元素,一个包含n*m个元素组成。n,m都是长度,或者说一维向量的维度。

3维/阶张量:有3个维度方向,一共有x*y*z个元素组成。每个维度方向,都是一个完整的数据集。

因此,在Python中,张量就是Python Numpy中的多维数组

(2)张量的维度方向标识

为了区分N个维度/阶段张量的不同维度方向,引入了dim或axis的概念。

不同的维度的张量,dim=0的位置不是固定的。

但有一个规则确实确定的:

  • dim=0方向总是最外层维度的方向。

1.2 张量的维度、阶数、向量的维度、张量的长度、张量的形状shape的区别

张量的维度、阶数:这两个概念是等价的,都是只张量的维度方向的个数。

(1)0维/0阶张量:

  1. tensor([1.])
  2. torch.Size([1])
  • 张量的维度、阶数 = 0
  • dim:无
  • 向量的维度为1
  • 形状:1

(2)一维/一阶张量:

  1. tensor([1.])
  2. torch.Size([1])
  1. tensor([[1., 1.]])
  2. torch.Size([1, 2])
  1. tensor([[1., 1., 1., 1., 1.]])
  2. torch.Size([1, 5])
  1. tensor([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
  2. torch.Size([1, 10])
  • 上述都是一维/一阶张量
  • 张量的维度、阶数 = 1
  • dim:0
  • 向量的维度为=1或5,10
  • 形状:1*1或1* 5 或1*10
(3)二维/二阶张量
  1. tensor([[1.]])
  2. torch.Size([1, 1])
  1. tensor([[1., 1.],
  2. [1., 1.]])
  3. torch.Size([2, 2])
  1. tensor([[1., 1., 1., 1., 1.],
  2. [1., 1., 1., 1., 1.],
  3. [1., 1., 1., 1., 1.],
  4. [1., 1., 1., 1., 1.],
  5. [1., 1., 1., 1., 1.]])
  6. torch.Size([5, 5])
  1. tensor([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  2. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  3. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  4. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  5. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  6. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  7. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  8. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  9. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  10. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
  11. torch.Size([10, 10])
  1. tensor([[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
  2. [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
  3. torch.Size([2, 10])
  1. tensor([[1., 1.],
  2. [1., 1.],
  3. [1., 1.],
  4. [1., 1.],
  5. [1., 1.],
  6. [1., 1.],
  7. [1., 1.],
  8. [1., 1.],
  9. [1., 1.],
  10. [1., 1.]])
  11. torch.Size([10, 2])
  • 上述都是二维/二阶张量
  • 张量的维度、阶数 = 2
  • dim:0或1
  • 向量的维度为=2或5,10
  • 形状:2*2或2* 5 或2*10或10*2

(3)三维、三阶张量

  1. tensor([[[1.]]])
  2. torch.Size([1, 1, 1])
  1. tensor([[[1., 1.],
  2. [1., 1.]],
  3. [[1., 1.],
  4. [1., 1.]]])
  5. torch.Size([2, 2, 2])
  1. tensor([[[1., 1., 1., 1., 1.],
  2. [1., 1., 1., 1., 1.],
  3. [1., 1., 1., 1., 1.],
  4. [1., 1., 1., 1., 1.],
  5. [1., 1., 1., 1., 1.]],
  6. [[1., 1., 1., 1., 1.],
  7. [1., 1., 1., 1., 1.],
  8. [1., 1., 1., 1., 1.],
  9. [1., 1., 1., 1., 1.],
  10. [1., 1., 1., 1., 1.]],
  11. [[1., 1., 1., 1., 1.],
  12. [1., 1., 1., 1., 1.],
  13. [1., 1., 1., 1., 1.],
  14. [1., 1., 1., 1., 1.],
  15. [1., 1., 1., 1., 1.]],
  16. [[1., 1., 1., 1., 1.],
  17. [1., 1., 1., 1., 1.],
  18. [1., 1., 1., 1., 1.],
  19. [1., 1., 1., 1., 1.],
  20. [1., 1., 1., 1., 1.]],
  21. [[1., 1., 1., 1., 1.],
  22. [1., 1., 1., 1., 1.],
  23. [1., 1., 1., 1., 1.],
  24. [1., 1., 1., 1., 1.],
  25. [1., 1., 1., 1., 1.]]])
  26. torch.Size([5, 5, 5])
  1. tensor([[[1., 1., 1.],
  2. [1., 1., 1.]]])
  3. torch.Size([1, 2, 3])
  1. tensor([[[1., 1., 1.]],
  2. [[1., 1., 1.]]])
  3. torch.Size([2, 1, 3])
  1. tensor([[[1.],
  2. [1.]],
  3. [[1.],
  4. [1.]],
  5. [[1.],
  6. [1.]]])
  7. torch.Size([3, 2, 1])
  • 上述都是3维/3阶张量
  • 张量的维度、阶数 = 3
  • dim:0或1或2
  • 向量的维度为=1,2,3,4,5.。。。。。
  • 形状:1*1*1或2,*2*2或3*3*3或5*5*5,或1*2*3或3*3*1或3*1*2

维度/阶数不变,形状可以变化。

1.3 张量的应用

在深度学习领域,用张量这样一个新的概念,替代Python Numpy中的0维张量(标量)、一维的向量,二维的矩阵,高维的数组。

深度学习框架中,所有待进行数学运算的数据,都是以张量的形态存储、存在。

任何维度的数据,如果不是张量形态的数据,需要首先转换成张量的形态。

1.4 为什么需要张量呢?

这是因为,在深度学习领域,输入的数据、深度学习处理的数据、输出数据,它们的维度为弹性的,并非确切的,因此需要一种弹性的数据来描述各种类型的数据,张量应运而生。

1.5 张量的本质

如果说向量是一种有m个特征的一维的数据结构,如身高、体重、地区、性别,

那么张量把这些特征,进行分组,每一个组称为一个维度,构成了一个多维特征的数据结构,这个数据结构就称为张量,因此张量是组织众多特征的一种数据结构!!!

wps中çexcel表格æä¹åºå®æä¸è¡

上述定义的excel表格与张量有这本质的区别:

excel表格的“列”是特征,上述表格中,特征是以一维向量的形式组织的。

excel表格的行是数据,每一行就是一个满足上述特征的数据实例,一个实例就是一个数据样本,行数可以无限多,样本可以无限多。

如果把上述表格中的特征,进行分组,便可构成二维、三维、高维的特征值,这便是张量!

张量是管理任意维度“特征”的一种数据结构。

第2章 张量的算数运算

张量的算术运算,就是多维数组的数学运算。

[Python系列-12]:人工智能 - 数学基础 -2- 数组元素的算术运算

https://blog.csdn.net/HiWangWenBing/article/details/119298635

第3章 张量的形状运算

3.1 合并

备注:

0维度方向:是指沿着行扩展的方向,增加或扩展行数的方式来合并。

1维度方向:是指沿着列扩展的方向,增加或扩展列数的方式来合并。

3.2 张量的分解

第4章 点积与乘积

4.1 张量的点积/内积

张量的点积就是多维数组的点积:

[Python系列-15]:人工智能 - 数学基础 -5- 向量内积(点乘)和外积(叉乘)概念及几何意义

https://blog.csdn.net/HiWangWenBing/article/details/119322764

4.2 张量的乘积/外积 (深度学习用不到)


作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/119358616

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/176244
推荐阅读
相关标签
  

闽ICP备14008679号