tensorflow学习之Session会话

观莫凡教程及笔记

1.Session会话

import tensorflow as tf

matrix1 = tf.constant([[3, 3]])  # 一行两列
matrix2 = tf.constant([[2],      # 两行一列
                      [2]])
product = tf.matmul(matrix1, matrix2)
# method1
sess = tf.Session()
result = sess.run(product)  # 不能用tensor.eval()
print(result)
sess.close()

# method2
with tf.Session() as sess:
    result2 = sess.run(product)  # 可以用tensor.eval()
    print(result2)
print(result2)  # 此时会出错

# method3
sess = tf.Session()
with sess.as_default():
    result3 = product.eval()  # 可以用operation.run()
    print(result3)
print(result3)  # 此时不会出错,因为sess.as_default():

# method4,
sess = tf.InteractiveSession()
a = tf.constant([[5.0]])
b = tf.constant([[6.0]])
c = tf.matmul(a, b)
# We can just use 'c.eval()' without passing 'sess'
print(sess.run(c))
print(c.eval())
sess.close()

注意的点:

(1)

tf.Session():创建一个会话

tf.Session().as_default():创建一个默认会话

tf.Session()创建一个会话,当上下文管理器退出时会话关闭和资源释放自动完成。

tf.Session().as_default()创建一个默认会话,当上下文管理器退出时会话没有关闭,还可以通过调用会话进行run()和eval()操作。

(2)

tf.InteractiveSession():可以在运行图的时候,插入新的图,可以方便的使用可交互环境来执行。

tf.Session():需要在启动session之前构建整个计算图,然后启动该计算图。

意思就是在我们使用tf.InteractiveSession()来构建会话的时候,我们可以先构建一个session然后再定义操作(operation),如果我们使用tf.Session()来构建会话我们需要在会话构建之前定义好全部的操作(operation)然后再构建会话。(引用自)

(3)

sess.run()与Tensor.eval()区别(引用自)

使用sess.run()在同一步获取多个tensor中的值,使用Tensor.eval()时只能在同一步当中获取一个tensor值,并且每次使用 eval 和 run时,都会执行整个计算图。

如果你有一个Tensor t,在使用t.eval()时,等价于:tf.get_default_session().run(t).

举例:

t = tf.constant(42.0)
sess = tf.Session()
with sess.as_default():   # or `with sess:` to close on exit
    assert sess is tf.get_default_session()
    assert t.eval() == sess.run(t)

这其中最主要的区别就在于你可以使用sess.run()在同一步获取多个tensor中的值,

例如:

t = tf.constant(42.0)
u = tf.constant(37.0)
tu = tf.mul(t, u)
ut = tf.mul(u, t)
with sess.as_default():
   tu.eval()  # runs one step
   ut.eval()  # runs one step
   sess.run([tu, ut])  # evaluates both tensors in a single step

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值