graph

tensorflow中graph包含一些操作对象,这些对象就是计算节点。而tensor表示的是不同操作间的数据节点。

tensorflow会创建默认的图,可以通过tf.get_default_graph()来访问:

代码:

import tensorflow as tf
import numpy as np

c=tf.constant(value=1)
#print(assert c.graph is tf.get_default_graph())
print(c.graph)
print(tf.get_default_graph())

结果:

如何使用自定义的graph,使用Graph.as_default()的上下文管理器:

代码:

import tensorflow as tf
import numpy as np

c=tf.constant(value=1)
#print(assert c.graph is tf.get_default_graph())
print(c.graph)
print(tf.get_default_graph())

g=tf.Graph()
print("g:",g)
with g.as_default():
  d=tf.constant(value=2)
  print(d.graph)
  #print(g)

g2=tf.Graph()
print("g2:",g2)
g2.as_default()
e=tf.constant(value=15)
print(e.graph)

结果:

分析:第一个总共有一个graph,就是c默认创建的;第二种情况:先创建了图g,然后在g下声明变量,因此g覆盖了d声明时默认的graph。第三种情况,就是有两个图。

tf.train.write_graph(g1.as_graph_def(),'.','graph.pb',False)  保存模型,但是它只是保存了模型的结构,并不保存训练完毕的参数值

tf.train.import_meta_graph函数给出model.ckpt-n.meta的路径后会加载图结构,并返回saver对象

tf.train.saver()保存模型,因为它只是保存了网络中的参数值,并不保存模型的结构。

tf.train.get_checkpoint_state(),可以用来检查是否有保存的checkpoint,

原文地址:https://www.cnblogs.com/smartwhite/p/8989413.html