在Tensorflow中,我们可以把整个的计算过程看作是一张流动的数据网络,数据从网络的一端流向另外一端,整个网络便是一张图,即Graph,而中间关键的计算称之为节点,即Session,下面我们将会从Numpy和Tensorflow两个方面对Session的应用作以比对:
首先,我们在Numpy中,对两个矩阵进行加法和乘法的运算:
import numpy as np
a = np.matrix([[ 2, 3, 6],
[ 1, 7, 8]])
b = np.matrix([[-2, 1, 4],
[ 3,-5, 2]])
c = np.matrix([[ 1, 2],
[ 4,-3],
[-1,-1]])
d = np.add(a,b)
e = np.matmul(a,c)
print(d)
print(e)
a,b,c均被定义成矩阵的形式,而d表示矩阵a与b的和,e表示矩阵a和矩阵c的积。最后将结果打印,得到:
d=
[[ 0 4 10]
[ 4 2 10]]
e=
[[ 8 -11]
[ 21 -27]]
从Tensorflow的角度,我们除了要定义计算的方式,还要初始化运算,具体如下面所示:
import tensorflow as tf
a = tf.constant([[ 2, 3, 6],
[ 1, 7, 8]])
b = tf.constant([[-2, 1, 4],
[ 3,-5, 2]])
c = tf.constant([[ 1, 2],
[ 4,-3],
[-1,-1]])
d = tf.add(a,b)
e = tf.matmul(a,c)
#########################
sess = tf.Session()
result1 = sess.run(d)
result2 = sess.run(e)
sess.close()
#########################
print(result1)
print(result2)
在这里除了需要按照tensorflow中的定义,对a,b,c进行定义,要注意的是,由于上述三个变量在后续的计算过程中不发生改变,所以会直接被定义为constant常量。
有所不同的是,我们在#处引入了tensorflow中的Session会话,首先打开会话,启动run,run括号中所指代的是一种计算形式,其最后会将结果反馈给sess.run()之前的变量,最终关闭整个会话即可。其运行结果和上文相同。
特别说明:如果总是忘记关闭会话,不妨借助Python中的with函数,可以将#内的语言内容改写为:
with tf.Session() as sess:
result1 = sess.run(d)
result2 = sess.run(e)
可以起到一样的效果。
为了可以在后续的学习中深入使用这一命令,我们也可以尝试着完成下面的任务。
1.借助Tensorflow完成矩阵A=[[2,5,3],[-2,1,1],[4,-2,-1]]的求逆操作并打印。
2.借助Tensorflow,创建两个随机数矩阵,分别为3行5列和5行3列,进行相乘操作并打印。