神经网络的数据表示——张量

引言

用数学量来表示物理量,可是标量加上向量,都不足以表达所有的物理量,几何代数中定义的张量是基于向量和矩阵的推广,所以就需要扩大数学量的概念,张量就出现了。

这里我将配合python的numpy库,帮助理解张量

预先环境

1. numpy
2. 线性代数

神经网络的数据表示——张量

在Numpy中,数据存储在多维的数组中,也叫张量(tensor)。一般来说,现在机器学习系统都是使用张量作为基本的数据结构。张量对AI领域特别重要,重要到Google的TensorFlow都使用他来命名

张量是一个数据容器,类型基本都是数值,因此也可以认为是一个数字容器。例如咱们所知的线性代数中的矩阵,就是二维张量

张量是矩阵向任意维度的推广。其中,张量的维度通常也叫轴(axis)

1.标量

仅包含一个数字的张量叫标量,也叫标量张量零维张量0D 张量。在Numpy中,一个float32,、float64的数字就是一个标量张量

>>>import numpy as np
>>>x = np.array(1)
>>>x.ndim
0

2.向量

数字组成的数组叫做向量(vector)一维张量(1D张量)。一维张量只有一个轴。

>>>import numpy as np
>>>x = np.array([1,2,3])
>>>x.ndim
1

3.矩阵

向量组成的数组叫做矩阵(matrix)或二维张量(2D张量)。二维张量有2个轴,也叫行和列

>>>import numpy as np
>>>x = np.array([[1,2,3],
                 [4,5,6],
                 [7,8,9]])
>>>x.ndim
2

4.3D张量与更高维张量

多个矩阵组合成一个新的数组就可以得到一个3D矩阵,可以直观理解为一个数字组成的立体

>>>import numpy as np
>>>x = np.array([[[1],[2],[3]],
                 [[4],[5],[6]],
                 [[7],[8],[9]]])
>>>x.ndim
3

将3D张量组合成一个数组,就可以创建一个4D张量,以此类推。通常深度学习处理的一般是0D到4D的张量,处理视频数据可能遇到5D张量

张量的性质

张量是由以下三个关键属性来定义的:

  • 轴的个数(阶)。3D张量有3个轴,矩阵有2个轴,向量一个轴。在numpy中为ndim
  • 形状。这是一个整数元组,表示张量沿每个轴的维度大小。例如前面的矩阵python例子形状为(3,3),特别的,向量的形状为(3,),标量的形状为()
  • 数据类型,由于张量存储在预先分配好的连续内存段,所以在大部分科学计算库,张量的计算通常是float32 float64 uint8,基本没有字符张量

 上一篇
利用梯度下降法(gradient descent)解决线性回归实战 利用梯度下降法(gradient descent)解决线性回归实战
引言对于机器学习的回归问题,这里我不做多介绍,网上博客介绍很多,这里我重在数学公式和实现过程 原理场景对于一个回归问题,寻找一个线性模型来很好的拟合样本,且设这个线性模型函数为 $$w * x + b$$ 这里的x不一定是一个数 有可能是一
2019-08-01
下一篇 
第二篇 三层神经网络的实例和数学原理 第二篇 三层神经网络的实例和数学原理
预先知识 理解线性映射 矩阵运算(会计算当然好,也不难,但重要性不大) 由于markdown或mathjax很难制作流程图,插入图片的话,我的博客嵌入图片比较麻烦,就先不画三层的神经网络,不过也不难,可以自行在草稿纸上画神经网络 实例
2019-07-21
  目录