Tensorflow中with tf.Session as sess 与 sess = tf.Session 的区别(学习笔记一)

第一部分:python中with...as...的用法

本文转自https://blog.csdn.net/weixin_42118374/article/details/80437050,纯属为了个人收藏查阅用,如侵权,请联系删除,谢谢。

结论就是:with是一个控制流语句,跟if/for/while/try之类的是一类的,with可以用来简化try finally代码,看起来可以比try finally更清晰。
        这里新引入了一个"上下文管理协议"context management protocol,实现方法是为一个类定义__enter__和__exit__两个函数。
        with expresion as variable的执行过程是,首先执行__enter__函数,它的返回值会赋给as后面的variable,想让它返回什么就返回什么,只要你知道怎么处理就可以了,如果不写as variable,返回值会被忽略。
        然后,开始执行with-block中的语句,不论成功失败(比如发生异常、错误,设置sys.exit()),在with-block执行完成后,会执行__exit__函数。
        这样的过程其实等价于:
        try:
        执行 __enter__的内容
        执行 with_block.
        finally:
        执行 __exit__内容
        只不过,现在把一部分代码封装成了__enter__函数,清理代码封装成__exit__函数。

第二部分:Tensorflow中with tf.Session() as sess用法详解

本文转自https://blog.csdn.net/wwwlyj123321/article/details/86064772,纯属为了个人收藏查阅用,如侵权,请联系删除,谢谢。

因此,原因就是:

一个Session可能会拥有一些资源,例如Variable或者Queue。当我们不再需要该session的时候,需要将这些资源进行释放。有两种方式,

    调用session.close()方法;
    使用with tf.Session()创建上下文(Context)来执行,当上下文退出时自动释放。
 

另外两篇有用的博客:

https://www.cnblogs.com/lienhua34/p/5998853.html

https://blog.csdn.net/qq_36666115/article/details/80017050

大家写的真好呀!

你可能感兴趣的:(Tensorflow中with tf.Session as sess 与 sess = tf.Session 的区别(学习笔记一))