[人工智能-深度学习-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阶张量:

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

(2)一维/一阶张量:

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

(3)三维、三阶张量

tensor([[[1.]]])
torch.Size([1, 1, 1])
tensor([[[1., 1.],
         [1., 1.]],

        [[1., 1.],
         [1., 1.]]])
torch.Size([2, 2, 2])
tensor([[[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]],

        [[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]],

        [[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]],

        [[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]],

        [[1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.],
         [1., 1., 1., 1., 1.]]])
torch.Size([5, 5, 5])
tensor([[[1., 1., 1.],
         [1., 1., 1.]]])
torch.Size([1, 2, 3])
tensor([[[1., 1., 1.]],

        [[1., 1., 1.]]])
torch.Size([2, 1, 3])
tensor([[[1.],
         [1.]],

        [[1.],
         [1.]],

        [[1.],
         [1.]]])
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

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值