赞
踩
深度学习的表现之所以能够超过传统的机器学习算法离不开神经网络,然而神经网络最基本的数据结构就是
向量
和矩阵
,神经网络的输入是向量,然后通过每个矩阵对向量进行线性变换,再经过激活函数的非线性变换,通过层层计算最终使得损失函数的最小化,完成模型的训练。所以要想学好深度学习,对这些基础的数据结构还是要非常了解。
学过线性代数的童鞋都知道,矩阵可以进行各种运算,比如:矩阵的加减法,矩阵的转置、矩阵的点乘、矩阵的叉乘,为了方便存储矩阵及进行矩阵之间的运算,大神们抽象出了PyTorch库,PyTorch库中有一个类叫torch.Tensor,这个类存储了一个矩阵变量,并且有一系列方法用于对这个矩阵进行各种运算,上面的这些矩阵运算都可以通过torch.Tensor类的相应方法实现。Tensor 这个单词一般可译作 “张量”,但是上面我们进行的都是矩阵运算,为什么要给这个类型起名字叫张量呢,直接叫矩阵不就行了吗?张量又是什么意思呢?通常我们不但要对矩阵进行运算,还要处理,零维的(单纯的一个数字)、一维矩阵(数组)、二维矩阵(矩阵)、三维的(三维矩阵)、还有多维矩阵,Pytorch为了把这些各种维统一起来,所以起名叫张量。这样,数组就是一阶张量,二维矩阵就是二阶张量,还有三阶张量,四阶张量、五阶张量、六阶张量等。pytorch中的 Tensor
支持超过一百种多操作,包括转置、索引、切片、数学运算、线性代数、随机数等等,总之,凡是你能想到的操作,在pytorch里都有对应的方法去完成。
下图是一个三维矩阵:
Python中定义一个标量:
x = 1
Python中定义一个向量:(向量在python中表示成一维数组)
import numpy as np
#行向量
a = np.array([1,2,3,4])
Python中定义一个矩阵:(矩阵在python中表示成二维数组)
import numpy as np
#矩阵
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
Python中定义一个三维矩阵,3阶的张量(三维矩阵,3阶的张量在python中表示成三维数组)
import numpy as np
#张量
a = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
我们以numpy.ndarrry类型的变量 t 的形状(t.shape)来说明:
标量是
0维空间中的一个点
,向量是一维空间中的一条线
,矩阵是二维空间的一个面
,三阶张量是三维空间中的一个体
。也就是说,向量是由标量组成的,矩阵是向量组成的,张量是矩阵组成的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。