TensorFlow之saved_model使用笔记

signature设置

x1 = tf.placeholder(tf.int32, shape=[None, None], name='x1')
x2 = tf.placeholder(tf.int32, shape=[None, None], name='x2')
……
y = output_tensor
loss = loss_tensor

inputs = {
            'x1': tf.saved_model.utils.build_tensor_info(x1),
            'x2': tf.saved_model.utils.build_tensor_info(x2)
}
outputs = {
            'y': tf.saved_model.utils.build_tensor_info(y),
            'loss': tf.saved_model.utils.build_tensor_info(loss)
}

signature = tf.saved_model.signature_def_utils.build_signature_def(
inputs=inputs, outputs=outputs, method_name='sig_cpu')  # 名字自定义

模型保存

# 1、建立builder
# 2、保存会话(主要是计算图和参数),有signature也一并保存
# 序列化写入磁盘

with tf.Session() as sess:
    model_path = path + '/model_save'
    bulder = tf.saved_model.builder.SavedModelBuilder(model_path)
    sig_config = {'save_sig': signature}
    builder.add_meta_graph_and_variables(sess, ['cpu_server'], sig_config)
    builder.save()

模型加载与使用

with tf.Session() as sess:
    # 不用执行初始化
    meta_graph_def = tf.saved_model.loader.load(sess, ['cpu_server'],  
                       model_path+'/model_save')
    signature = meta_graph_def.signature_def
    signature_key = 'save_sig'
    input_x1 = 'x1'
    input_x2 = 'x2'
    output_y = 'y'
    out_loss = 'loss'
    
    x1 = signature[signature_key].inputs[input_x1].name
    x2 = signature[signature_key].inputs[input_x2].name
    y = signature[signature_key].inputs[output_y].name
    loss = signature[signature_key].outputs[output_loss].name

    feed = {x1: , x2: , y: , loss: }
    res, _ = sess.run([y, loss], feed_dict=feed)
    

 


版权声明:本文为phynikesi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。