import tensorflow as tf
import os
from tensorflow.python import pywrap_tensorflow
model_path="./checkPointModel/" # newModel checkPointModel
input_checkpoint=model_path+"model.ckpt"
output_node_names = "output"
saver = tf.train.import_meta_graph(input_checkpoint + '.meta', clear_devices=True)
graph = tf.get_default_graph() # 获得默认的图
input_graph_def = graph.as_graph_def() # 返回一个序列化的图代表当前的图
changeName=False #False True
opsShow=True
with tf.Session() as sess:
saver.restore(sess, input_checkpoint) # 恢复图并得到数据
total_graph=sess.graph.get_operations()
if opsShow:
for ops in total_graph:
if ops.name=="output":
# ops.name="lklk"
# ops.name=ops.name.replace("output","lklk")
print(ops.name)
# print(ops.values())
lisArry=[op.name for op in total_graph]
for name in lisArry:
print(name)
# reader = pywrap_tensorflow.NewCheckpointReader(input_checkpoint)
# var_to_shape_map = reader.get_variable_to_shape_map()
# Print tensor name and values
# for key in var_to_shape_map:
# print("tensor_name: ", key) #输出变量名
# print(reader.get_tensor(key)) #输出变量值
# for var_name, _ in tf.contrib.framework.list_variables(input_checkpoint):
# print(var_name)
# ("output"))
if changeName:
for var_name, _ in tf.contrib.framework.list_variables(input_checkpoint):
# Load the variable
var = tf.contrib.framework.load_variable(input_checkpoint, var_name)
print(var_name)
# Set the new name
new_name = var_name
if new_name=="output":
new_name = new_name.replace("output", "lklk")
print('Renaming %s to %s.' % (var_name, new_name))
# Rename the variable
var = tf.Variable(var, name=new_name)
# Save the variables
# saver = load_model(input_checkpoint)
sess.run(tf.global_variables_initializer())
saver.save(sess, "./newModel/model.ckpt")
其中在固化模型时主要是用到op时的操作名,可以下代码获取通过(如何修改OPS名字还未解决):
if opsShow:
for ops in total_graph:
if ops.name=="output":
# ops.name="lklk"
# ops.name=ops.name.replace("output","lklk")
print(ops.name)
# print(ops.values())
lisArry=[op.name for op in total_graph]
for name in lisArry:
print(name)