修改已知模型的变量名

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值