TensorFlow教程(四):矩阵操作

学习TensorFlow中矩阵的操作对于理解计算图中数据的流动来说非常重要。

1、创建矩阵

可以使用numpy数组(或者嵌套列表来创建二维矩阵);也可以使用创建张量的函数(比如,zeros(),ones(),truncated_normal()等)来指定一个二维形状的矩阵;也可以使用diag()函数从一个一维数组(或者列表)来创建一个对角矩阵。

import tensorflow as tf
import numpy as np
sess = tf.Session()

identity_matrix = tf.diag([1.0, 1.0, 1.0])
A = tf.truncated_normal([2,3])
B = tf.fill([2, 3], 5.0)
C = tf.random_uniform([3,2])
D = tf.convert_to_tensor(np.array([[1.0, 2.0, 3.0], [-3.0, -7.0, -1.0], [0.0, 5.0, -2.0]]))


print(sess.run(identity_matrix))
#[[1.0, 0.0, 0.0]
# [0.0, 1.0, 0.0]
# [0.0, 0.0, 1.0]]

print(sess.run(A))
#[[0.96751703, 0.11397751, -0.3438891]
# [-0.10132604, -0.8432678, 0.29810956]]

print(sess.run(B))
#[[5.0, 5.0, 5.0]
# [5.0, 5.0, 5.0]]

print(sess.run(C))
#[[0.33184357, 0.08907614]
# [0.53189191, 0.067605299]
# [0.99889051, 0.67061249]]

print(sess.run(D))
#[[1.0, 2.0, 3.0]
# [-3.0, -7.0, -1.0]
# [0.0, 5.0, -2.0]]

 

2、矩阵的加法和减法

print(sess.run(A+B))
#[[4.61596632, 5.39171136, 4.4325695]
# [3.260702736, 5.14477345, 4.98265553]]

print(sess.run(B-B))
#[[0.0, 0.0, 0.0]
# [0.0, 0.0, 0.0]]

3、矩阵的乘法

print(sess.run(tf.matmul(B, identity_matrix)))
#[[5.0, 5.0, 5.0]
# [5.0, 5.0, 5.0]]

4、矩阵的转置

print(sess.run(tf.transpose(C)))
#[[0.67124544, 0.26766731, 0.99068872]
# [0.25006028, 0.86560275, 0.58411312]]

5、矩阵的初始化

A和C每次运行都会初始化为不同的值。

6、矩阵的行列式

print(sess.run(tf.matrix_determinant(D)))
#-38.0

7、矩阵的逆矩阵

print(sess.run(tf.matrix_inverse(D)))
#[[-0.5, -0.5, -0.5]
#[0.15789474, 0.05263158, 0.21052632]
#[39473684, 0.13157895, 0.02631579]]

8、矩阵的分解

print(sess.run(tf.cholesky(identity_matrix)))
#[[1.0, 0.0, 1.0]
#[0.0, 1.0, 0.0]
#[0.0, 0.0, 1.0]]

9、矩阵的特征值和特征向量

print(sess.run(tf.self_adjoint_eig(D)))
#[[-10.65907521, -0.22750691, 2.88658212]
#[0.21749542, 0.63250104, -0.74339638]
#[0.84526515, 0.2587998, 46749277]
#[-0.4880805, 0.73004459, 0.47834331]]

注意:

1、TensorFlow中矩阵的求逆方法是Cholesky矩阵分解方法(又称为平方根法),矩阵需要为对称正定矩阵或者可进行LU分解。

2、self_adjoint_eig()函数的输出结果中,第一行为特征值,剩下的向量是对应的向量。在数学中,这个方法也叫做矩阵的特征分解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值