美文网首页
张量、向量、矩阵、卷积

张量、向量、矩阵、卷积

作者: 李霖弢 | 来源:发表于2022-10-07 16:51 被阅读0次

张量(Tensor)

张量是一个数据容器,是矩阵向任意维度的推广。

  • 张量的维度(dimension)也可以叫作阶或轴(axis)。
  • 张量的形状是一个整数元组,表示张量沿每个轴的维度大小(元素个数)。
标量 scalar(0D 张量)
  • 仅包含一个数字的张量叫作标量,也叫零维张量、0D 张量、0阶张量。
向量 vector(1D 张量)
  • 数组,也叫1维张量、1D 张量、1阶张量。
    注意,向量和张量的维度不是一个概念。向量的维度可以表示沿某个轴上元素的个数,而张量的维度表示轴的数量。如 [1,2,4,8] 是一个 4维向量,或一个4维的1维张量。
  • 向量的内积是同维数字相乘之和,如:
    (a_1, a_2,…, a_n)·(b_1, b_2,…, b_n)=a_1 b_1+a_2 b_2+……+a_n b_n
矩阵 matrix(2D 张量)
  • 二维数组,也叫2维张量、2D 张量、2阶张量。
    矩阵的形状也称矩阵的维数,如2×2矩阵
  • 矩阵加法
    同形状矩阵直接可以相加,同位置元素相加即可
  • 矩阵内积
    同形状矩阵之间可以内积,其结果为同位置数字相乘之和,如:
    \begin{bmatrix}a&b\\c&d\end{bmatrix}⊙\begin{bmatrix}e&f\\g&h\end{bmatrix} = ae+bf+cg+dh
  • 矩阵外积(矩阵乘法)
    前者的列数需等于后者行数的矩阵可以外积,结果为前者行数×后者列数的矩阵,如:
    \begin{bmatrix}a&b\\c&d\end{bmatrix}⋅\begin{bmatrix}e&f\\g&h\end{bmatrix} = \begin{bmatrix}ae+bg&af+bh\\ce+dg&cf+dh\end{bmatrix}
    矩阵乘法符合结合率,但不符合交换律
  • 单位矩阵
    主对角线上都是1,其他都是0的方阵称为单位矩阵,符合乘法交换律
  • 秩与逆矩阵
    矩阵A × 逆矩阵A^{-1} = 单位矩阵
    逆矩阵符合乘法交换律,且只有满秩方阵有逆矩阵(此时|A| != 0),不满秩的方阵称为奇异矩阵或退化矩阵(此时|A| = 0
  • 转置矩阵
    B_{ij}=A_{ji}
    A=\begin{bmatrix}1&2&0\\3&5&9\end{bmatrix},则A^T=\begin{bmatrix}1&3\\2&5\\0&9\end{bmatrix}
3D 张量与更高维张量
  • 三维数组可以理解为数字组成的立方体。
    如一张图片即一个3阶张量,张量的长宽即图片的分辨率,张量的高度为3(灰度图为1),即图像的彩色通道数(channel)
  • 将多个 3D 张量组合成一个数组,可以创建一个 4D 张量,以此类推。
    深度学习处理的一般是 0D 到 4D 的张量,但处理视频数据时可能会遇到 5D 张量。

常见数据类型

向量数据集(2D)

通常将每个数据点编码为一个向量(1D),则其数据批量为 2D 张量(即 向量 组成的数组)。其中第一个轴是样本轴,第二个轴是特征轴。

  • 人口统计数据集,其中包括每个人的年龄、邮编和收入。每个人可以表示为包含 3 个值的向量,而整个数据集包含 100 000 个人,因此可以存储在形状为 (100000, 3) 的 2D张量中。
时间序列数据或序列数据集(3D)

当时间(或序列顺序)对于数据很重要时,应该将数据存储在带有时间轴的 3D 张量中。根据惯例,时间轴始终是第 2 个轴(索引为 1 的轴)。

  • 股票价格数据集。每一分钟,我们将股票的3个值(当前价格、前一分钟的最高价格和前一分钟的最低价格)编码为一个 3D 向量。整个交易日被编码为一个形状为 (390, 3) 的 2D 张量(一个交易日有 390 分钟),而 250 天的数据则可以保存在一个形状为 (250, 390, 3) 的 3D 张量中。这里每个样本是一天的股票数据。
图像数据集(4D)

单张图像为3D(图像集则为4D),其包含三个维度:高度、宽度和颜色深度(灰度图像的彩色通道是1维,彩色图像是3维)。
图像张量的形状有两种约定:在 TensorFlow 中使用通道在后(channels-last)的约定 (samples, height, width, color_depth),在 Theano 中使用通道在前(channels-first)的约定(samples, color_depth, height, width) 。Keras 框架同时支持这两种格式。如在 TensorFlow 中 128 张 256×256 大小的图像, 灰度图像组成的批量可以保存在一个形状为 (128, 256, 256, 1) 的张量中,而彩色图像组成的批量则可以保存在一个形状为 (128, 256, 256, 3) 的张量中。

视频数据集(5D)

每个视频可以看作一系列帧(即一个图像数据集),保存在一个形状为 (frames, height, width,color_depth) 的 4D 张量中。
而不同视频组成的批量则可以保存在一个 5D 张量中,其形状为(samples, frames, height, width, color_depth) 。

————————————————
版权声明:本文为CSDN博主「醉Dowry」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42259833/article/details/124766853


卷积运算(convolution)

卷指内卷/约束,两个变量互相纠缠。积是内积,两个概率密度函数或概率组成的向量的内积。
两个函数的卷积,本质上就是先将一个函数翻转,然后进行滑动叠加,是过去的所有输入的效果的累积(积分或加权求和)。期间需保持\tau + (n-\tau)=n的约束。

连续形式:(f*g)(n) = \int_{-\infty}^{+\infty}f(\tau)g(n-\tau)d\tau
离散形式:(f*g)(n) = \sum_{\tau=-\infty}^{+\infty}f(\tau)g(n-\tau)

  • 离散形式举例:抛两枚6面骰,求相加为4的概率
    f(1)g(3)+f(2)g(2)+f(3)g(1)=\frac{1}{12} \implies (f*g)(4) = \sum_{\tau=1}^{3}f(\tau)g(4-\tau)
    翻转滑动叠加
  • 连续形式举例:0秒开始输入,求10秒后剩余的信号输入总合
    (f*g)(10) = \int_{0}^{10}f(\tau-0)g(10-\tau)d\tau
    其中f(\tau)为某一时刻输入的信号,g(10-\tau)为10秒截止时的信号衰减函数
翻转滑动叠加
向量卷积

两个向量卷积,结果仍为向量,其长度为\text{两向量长度差}+1。为保证卷积结果维数同长向量,可在长向量两端补短向量维数-10
向量卷积的数学意义可参考多项式乘法,如(x^2+3x+2)(2x+5)=2x^3+11x^2+19x+10,可视为基底为{x^3,x^2,x,1}的向量空间中,(0,1,3,2,0)*(2,5)=(2,11,19,10)

矩阵卷积

向量(即一维卷积)的情况如上所示,多维张量以此类推,也可以进行卷积运算:
(f*g)(x,y,z) = \int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}f(\alpha,\beta,\gamma)g(x-\alpha,y-\beta,z-\gamma)d\alpha d\beta d\gamma

矩阵的卷积结果仍为矩阵,类似向量卷积,在横纵两个维度滑动求内积。例如要求a_{11}点时,取出其周围点组成的矩阵f=\begin{bmatrix}a_{00}&a_{01}&a_{02}\\a_{10}&a_{11}&a_{12}\\a_{20}&a_{21}&a_{22}\end{bmatrix},与另一矩阵g计算内积:

  • g 与 f 维度相同但下标相反


    g 与 f 维度相同但下标相反
  • 此处可理解为g旋转了180°后进行内积计算


    此处可理解为g旋转了180°后进行内积计算

当计算如a_{00}的边缘点时,可用0补全矩阵中不存在的a_{-1-1}等点,也可以用其他方式补全(如OpenCV中的边缘拷贝等)。

三阶张量

彩色图片即为三阶张量,可以理解为RGB三个矩阵的叠加。其卷积可以转化为进行3次独立的矩阵卷积,再将三个结果矩阵相加,合并为一个通道数为1的三阶张量。

相关文章

网友评论

      本文标题:张量、向量、矩阵、卷积

      本文链接:https://www.haomeiwen.com/subject/idhwartx.html