张量流中的freeze_graph:断言错误:y_不在图

时间:2017-05-25 13:05:41

标签: python graph tensorflow deep-learning

在Tensorflow中,在训练模型后,我保存了它:

with tf.Session() as session:
/** 
    ------- Model training code goes here ------
**/
tf.train.write_graph(session.graph_def, '.', '../har.pbtxt')  
saver.save(session,save_path = "../har.ckpt")

冻结并保存优化模型:

from tensorflow.python.tools import freeze_graph
from tensorflow.python.tools import optimize_for_inference_lib

freeze_graph.freeze_graph(input_graph = "../har.pbtxt",  input_saver = "",
             input_binary = False, input_checkpoint = "../har.ckpt", output_node_names = "y_",
             restore_op_name = "save/restore_all", filename_tensor_name = "save/Const:0",
             output_graph = "frozen_har.pb", clear_devices = True, initializer_nodes = "")

input_graph_def = tf.GraphDef()
with tf.gfile.Open(output_frozen_graph_name, "r") as f:
    data = f.read()
    input_graph_def.ParseFromString(data)

output_graph_def = optimize_for_inference_lib.optimize_for_inference(
        input_graph_def,
        ["input"], 
        ["y_"],
        tf.float32.as_datatype_enum)

f = tf.gfile.FastGFile("optimized_frozen_har.pb", "w")
f.write(output_graph_def.SerializeToString())

然而,我收到错误:

  

追踪(最近的呼叫最后):
  文件   “C:\ Users \ asus \ Desktop \ cnn.py”,第176行,中       output_graph =“frozen_har.pb”,clear_devices = True,initializer_nodes =“”)
  文件   “C:\用户\ ASUS \应用程序数据\本地\程序\ Python的\ Python35 \ LIB \站点包\ tensorflow \ python的\工具\ freeze_graph.py”   第125行,在freeze_graph中       variable_names_blacklist = variable_names_blacklist)文件“C:\ Users \ asus \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ framework \ graph_util_impl.py”,   第202行,在convert_variables_to_constants中       inference_graph = extract_sub_graph(input_graph_def,output_node_names)
  文件   “C:\用户\ ASUS \应用程序数据\本地\程序\ Python的\ Python35 \ LIB \站点包\ tensorflow \ python的\框架\ graph_util_impl.py”   第141行,在extract_sub_graph中       在name_to_node_map中断言d,“%s不在图中”%d断言错误:y_不在图中

我在代码中将y_定义为输出:

y_ = tf.nn.softmax(tf.matmul(f, out_weights) + out_biases)

问题是什么?

1 个答案:

答案 0 :(得分:3)

使用时,

y_ = tf.nn.softmax(tf.matmul(f, out_weights) + out_biases)

y_不是张量的名称。请使用以下命令将张量明确命名为y _。

y_ = tf.nn.softmax(tf.matmul(f, out_weights) + out_biases, name="y_")