Tensorflow中的会话是来执行定义好的运算的。会话拥有并管理Tensorflow程序运行时的所有资源。当计算完成之后需要关闭会话来帮助系统回收资源,否则可能出现资源泄露的问题。 会话模式一般有两种:
1、需要明确调用会话生成函数和会话关闭函数
#创建一个会话
sess = tf.Session()
#用创建好的会话得到运算结果
sess.run(...)
#关闭会话
sess.close()
2、通过Python的上下文管理器来使用会话
with tf.Session() as sess:
sess.run(...)
Tensorflow不会自动生成默认会话,需要手动指定。当默认会话被指定之后可以通过tf.tensorflow.eval函数来计算一个张量的取值。
a = tf.constant([1.0, 2.0], name='a')
b = tf.constant([2.0, 3.0], name='b')
result = a + b
sess = tf.Session()
with sess.as_default():
print(result.eval())
下面的代码也能完成相同功能
sess = tf.Session()
#print(sess.run(result)) 同下句功能相同
print(result.eval(session=sess))
sess.close()
Tensorflow还提供了一种在交互环境下直接构建默认会话的函数tf.InteractiveSession.使用这个函数自动将生成的会话注册为默认会话。
#自动将生成的会话注册为默认会话
weigth = tf.Variable(tf.random_normal([2, 3], stddev=2, seed=1))
sess = tf.InteractiveSession()
sess.run(weigth.initializer)
print(weigth.eval())
sess.close()
或者:
weights = tf.Variable(tf.random_normal([2, 3], stddev=2, seed=1))
sess = tf.Session()
with sess.as_default():
sess.run(weights.initializer)
print(weights.eval())
其中tf.random_normal()函数用于从服从指定正太分布的数值中取出指定个数的值。
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
参数代表的意义(形状,均值,标准差,输出类型,随机数种子,操作名称)其中 随机数种子,是一个整数,当设置之后,每次生成的随机数都一样。