Tensorflow快餐教程(4) - 矩阵

作者: 阿里云云栖号 | 来源:发表于2018-04-25 16:55 被阅读249次

摘要: Tensorflow矩阵基础运算

矩阵

矩阵的初始化

矩阵因为元素更多,所以初始化函数更多了。光靠tf.linspace,tf.range之类的线性生成函数已经不够用了。

可以通过先生成一个线性序列,然后再reshape成一个矩阵的方式来初始化。

例:

tf.linspace生成了(16,)的一个向量,然后被reshape成(4,4)的矩阵。

生成全0值的矩阵

tf.zeros可以生成全0的矩阵,不指定类型时,默认为float32.

可以指定数据类型:

生成全1的矩阵

类似地,我们可以用tf.ones生成值全为1的矩阵。

例:

将矩阵全部设成一个值

tf.ones和tf.zeros其实是特例,tf.fill才是更通用的功能:

生成对角矩阵

矩阵一个特点是经常是只有稀疏的值。最常用的就是对角阵,只有一条对角线上有值。

例:

除了生成对角阵,我们还可以从一个矩阵中将对角线值获取成一个向量:

随机生成初始化值

除了全0,全1,全确定值和对角线值,还有一种非常常用的方式就是生成随机值。

我们可以按正态分布来生成初始值:

可以指定平均值和标准差,默认均值为0,标准差为1。默认的类型为float32,反正不支持整数。

例:

矩阵的转置

将矩阵中的元素基于对角线对称交换,叫做矩阵的转置transpose。

例:

1,4,7,10是对角线,在转置时保持不变。

在非方阵的情况下,转置后对角线仍然保持不变。

我们看一个2*3矩阵的例子:

对角线是1和8.2.

我们转置一下:

虽然从一个宽矩阵变成了高矩阵,但是对角线仍然是1和8.2.

矩阵的数学运算

加减运算

两个行列相同的矩阵可以进行加减运算。

例:

广播运算

例:

矩阵乘积

"*"运算在矩阵乘法中,跟上节所讲一样,还是Hadamard积,就是对应元素的积,例:

我们也可以用matmul函数,或者"@"运算符计算矩阵相乘的结果:

"@"是高版本Python中支持的操作,在tensorflow中重载它的函数为matmul。

逆矩阵 Inverse Matrices

定义I为单位对角矩阵,如果BA=I,那么我就说B是A的逆矩阵。可以通过matrix_inverse函数来获得逆矩阵,例:

我们来验算一下i01_rev与i01相乘是不是单位矩阵:

果然是。

对角阵比较特殊,还满足交换律:

求行列式的值以判断是否有逆矩阵

我们学习线性代数知道,如果一个矩阵要想有逆矩阵,它的行列式一定不能为0。

在Matlab和mathematica两大著名数学软件中,求行列式的函数名字很简单,就是det。

Tensorflow因为是个库,所以名字比较长,叫tf.matrix_determinant.

我们来看一个例子:

利用逆矩阵求解线性方程组

假设有下列方程组,求解:

这个题中的系数矩阵就是我们刚才例子中的矩阵,我们已经求得行列式值为-8不等于0,所以我们可以通过用系数矩阵的逆矩阵乘以常数向量的方式求解。

最后求得,x=1.5, y=0.875, z = -1.375.

详情请阅读原文

相关文章

  • Tensorflow快餐教程(4) - 矩阵

    矩阵 矩阵的初始化 矩阵因为元素更多,所以初始化函数更多了。光靠tf.linspace,tf.range之类的线性...

  • Tensorflow快餐教程(4) - 矩阵

    摘要:Tensorflow矩阵基础运算 矩阵 矩阵的初始化 矩阵因为元素更多,所以初始化函数更多了。光靠tf.li...

  • Tensorflow快餐教程(5) - 范数

    摘要:范数的定义和Tensorflow实现 矩阵进阶 - 范数 作为快餐教程,我们尽可能多上代码,多介绍工具,少讲...

  • Tensorflow快餐教程(6) - 矩阵分解

    摘要:特征分解,奇异值分解,Moore-Penrose广义逆 矩阵分解 特征向量和特征值 我们在《线性代数》课学过...

  • Tensorflow快餐教程(3) - 向量

    向量 向量在编程语言中就是最常用的一维数组。二维数组叫做矩阵,三维以上叫做张量。 向量虽然简单,高效,且容易理解。...

  • Tensorflow快餐教程(9) - 卷积

    摘要:卷积的计算方法 卷积 卷积就是滑动中提取特征的过程 在数学中,卷积convolution是一种函数的定义。它...

  • Tensorflow快餐教程(3)- 向量

    摘要:Tensorflow向量操作 向量 向量在编程语言中就是最常用的一维数组。 二维数组叫做矩阵,三维以上叫做张...

  • Tensorflow快餐教程(9) - 卷积

    卷积 卷积就是滑动中提取特征的过程 在数学中,卷积convolution是一种函数的定义。它是通过两个函数f和g生...

  • Tensorflow快餐教程(5) - 范数

    矩阵进阶 - 范数 作为快餐教程,我们尽可能多上代码,多介绍工具,少讲原理和公式。但是我也深知这样是无法讲清楚的,...

  • Tensorflow快餐教程(2) - 标量运算

    Tensorflow的Tensor意为张量。一般如果是0维的数组,就是一个数据,我们称之为标是Scalar;1维的...

网友评论

    本文标题:Tensorflow快餐教程(4) - 矩阵

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