TENSORFLOW:GRAPH 和 SESSION续

匿名 (未验证) 提交于 2019-12-02 23:42:01

用tf.Session.run去运行opertions

tf.Session.run方法是tensorflow里去执行一个opertion或者对tensor求值的主要方式。你可以把一个或者多个opertaion或者tensor传递给session.run去执行。TensorFlow会执行这些operation和所有这个operation依赖的计算去得到结果。

session.run需要你指定一个fetch列表。一个fetch可以是tensor,operation,类tensor对象(variable)。这个fetch列表决定了session.run要返回的值。这些fetch决定了graph里哪些subgraph里需要被执行来得到结果。这个subgraph是fetch里指定的operation和这个operation依赖的operations。下边的例子演示了这一点:

 

tf.Session.run会接受一个可选的feeds dictionary。主要是用来完成从一个tensor(主要是placeholder)到值(主要是python的标量,list,ndarray)的映射。在执行时用值来替换tensor。比如:

 

tf.Session.run也接受可选的options参数来指定参数。还有一个可选的run_metatdata 参数可以让你收集执行的参数。比如你可以用这些参数一起来记录执行的信息。

 

可视化你的图


TensorFlow提供了可以让你理解你的graph的工具。graph visualizer是TensorBoard的一个模块。它可以在浏览器里可视化的输出你在代码里定义的graph。最简单的方式去创建一个可视化的图是创建一个tf.summary.FileWriter,并给他传一个tf.Graph

 

注意:如果你用的是一个tf.estimator.Estimator对象。那么graph和任意的summaries都会被自动到放到你在创建estimator时指定的model_dir里。


多图编程


注意:当训练一个模型时,一种通用的做法是用一个graph去训练你的模型,用给另一个图去引用你的模型去验证你的模型的性能。很多情况下,验证的graph和训练的graph构造也不一样。比如droupout和batch normalization在不同的图里操作是不一样的。更进一步,默认情况下像tf.train.Server这样的工具类使用tf.Variable的名字(variable的名字是根据底层的tf.Operation命名的。)去识别一个保存的checkpoint的variable。你用不同的进程去执行不同的graph没有问题,你也可以在一个进程里执行多个图。这里我们要说的是第二种情况。

就像上边说的,TensorFlow提供了一个default graph,它会被隐式的传给在相同context下的所有API function。对于大多数程序,一个graph就够用了。但是Tensorflow也提供了操作default graph的方法。它可以帮你实现一些高级的应用。比如:

你可以创建一个不同的Graph作为default graph。可以使用tf.Graph.as_default context manager:

 

可以通过tf.get_default_graph来获取当前的default graph。这个方法返回了一个tf.Graph的对象。

 

------------------------------------------------------------------------------------------

原文:http://www.rethink.fun/index.php/2018/03/12/tensorflow6/

文章来源: https://blog.csdn.net/lcczzu/article/details/91463241
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!