在解析上一段代码之前,我们来看一个官方文档里面更简单的一个例子。
粗略翻译一下便是这个意思:
tf.Session类是用来运行TF操作的。
一个Session对象囊括了执行操作对象的环境,并且Tensor的操作会被执行,例如:
# Build a graph
a = tf.constant(5.0)
b = tf.constant(6.0)
c = a * b
# launch the graph in session
sess = tf.Session()
# Evaluate the Session \'c\'
print sess.run(c)
这几行代码的意思很简单,首先创造了两个常量a和b,分别赋予5.0和6.0,再创造一个变量c,使其等于a * b
关于注释中的Graph,是前两节没有讲的,但是初学TF是会看到很多Graph的字样的。
那是因为TF就是使用Graph来表示计算任务的,并且要在Session中执行图。
于是下面我们就启动一个session对象,并且在print语句中执行sess.run()语句去执行c
继续翻译:
一个Session可能占用计算资源,就像变量,queue(队列?),和readers一样。所以释放计算资源是非常重要的。
为了达到释放计算资源的目的,可以使用close()这样的显式方法,或者在隐式释放的代码中去用session,比如下面的代码
# Using the close() method
sess = tf.Session()
sess.run()
sess.close()
#Using the context manager
with tf.Session() as sess:
sess.run()
其中第一种是显式释放,第二种是隐式释放。
关于Session的内容也就这么多吧,然后看一看上次留下的代码。
import tensorflow as tf
matrix1 = tf.constant([[3, 3]])
matrix2 = tf.constant([[2],
[2]])
product = tf.matmul(matrix1, matrix2) # matrix multiply
# method 1
# sess = tf.Session()
# result = sess.run(product)
# print(result)
# sess.close()
# method 2
with tf.Session() as sess:
result2 = sess.run(product)
print(result2)
# auto close()
没错,机器学习的计算中有着大量的矩阵运算,这个例子和第一个例子是很像的,只不过将直接的四则运算变成了矩阵运算。
前几行产生了两个常量矩阵,并且将它们的乘积保存在了product中。
然后我们要弄一个Session对象,并且运行了product。
最后我们完成了我们的目的,于是要释放运算资源,有两种方法。
method1下面是显式的释放,method2下面是隐式的释放,其实也就这么简单了。
是不是感觉内容太少了点,不急不急,我们慢慢来嘛。
老规矩,下次说一说TF中的变量:
import tensorflow as tf
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)
with tf.Session() as sess:
print(sess.run(output, feed_dict = {input1: [7.], input2: [2.]}))