在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: \ Users \ asus \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ tools \ freeze_graph.py“,第122行,在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:\ Users \ asus \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ framework \ graph_util_impl.py“,第141行,在extract_sub_graph断言d中的name_to_node_map,”%s不在图中“%d断言错误:y_是不在图表中
我在我的代码中将 y_
定义为输出:
y_ = tf.nn.softmax(tf.matmul(f, out_weights) + out_biases)
看来问题是什么?
1 回答
当你使用时,
y_不是张量的名称 . 请使用以下内容,将张量明确命名为y_ .