Tensorflow运行模型-----会话

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)

参数代表的意义(形状,均值,标准差,输出类型,随机数种子,操作名称)其中 随机数种子,是一个整数,当设置之后,每次生成的随机数都一样。

猜你喜欢

转载自blog.csdn.net/lrr_csdn/article/details/84310883
今日推荐