本节主要详述tensorflow的InteractiveSession(),以下代码在python3.5,tensorflow1.5.0,numpy1.13.3下测试通过,想学习的小伙伴可以直接拷贝运行,一块学习提高呀。
InteractiveSession() 主要是避免 Session(会话)被一个变量持有。
代码:
import tensorflow as tf
a = tf.constant(1.0)
b = tf.constant(2.0)
c = a + b
# 下面的两种情况是等价的
with tf.Session():
print c.eval()
sess = tf.InteractiveSession()
print c.eval()
sess.close()
运行结果:
3.0
3.0
代码:
a = tf.constant(1.0)
b = tf.constant(2.0)
c = tf.Variable(3.0)
d = a + b
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
###################
# 这样写是错误的
# print a.run()
# print d.run()
####################
# 这样才是正确的
print a.eval()
print d.eval()
# run() 方法主要用来
x = tf.Variable(1.2)
# print x.eval() # 还没初始化,不能用
x.initializer.run() # x.initializer 就是一个初始化的 op, op才调用run() 方法
print x.eval()
sess.close()
运行结果:
1.0
3.0
1.2
使用 tf.InteractiveSession() 来完成上面 1.2 中 求和 、平均的操作
代码:
h_sum = tf.Variable(0.0, dtype=tf.float32)
# h_vec = tf.random_normal(shape=([10]))
h_vec = tf.constant([1.0,2.0,3.0,4.0])
# 把 h_vec 的每个元素加到 h_sum 中,然后再除以 10 来计算平均值
# 待添加的数
h_add = tf.placeholder(tf.float32)
# 添加之后的值
h_new = tf.add(h_sum, h_add)
# 更新 h_new 的 op
update = tf.assign(h_sum, h_new)
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
print 's_sum =', h_sum.eval()
print "vec = ", h_vec.eval()
print "vec = ", h_vec[0].eval()
for _ in range(4):
update.eval(feed_dict={h_add: h_vec[_].eval()})
print 'h_sum =', h_sum.eval()
sess.close()
运行结果:
s_sum = 0.0
vec = [ 1. 2. 3. 4.]
vec = 1.0
h_sum = 1.0
h_sum = 3.0
h_sum = 6.0
h_sum = 10.0
如果代码有看不懂的小伙伴,可以留言或者私信博主(* ̄︶ ̄)。