tensorflow 之模型的保存与加载

Posted black-mamba

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tensorflow 之模型的保存与加载相关的知识,希望对你有一定的参考价值。

前面的两篇博文

第一篇:简单的模型保存和加载,会包含所有的信息:神经网络的op,node,args等;

第二篇:选择性的进行模型参数的保存与加载。

本篇介绍,只保存和加载神经网络的计算图,即前向传播的过程。

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
############################
#File Name: save_restore.py
#Brief:
#Author: frank
#Mail: [email protected]
#Created Time:2018-06-26 20:30:09
############################

import tensorflow as tf
from tensorflow.python.framework import graph_util

#TF提供了convert_variables_to_constants函数,通过这个函数可以将计算图中的变量及其取值通过常量的方式保存.

v1 = tf.Variable(tf.constant(1.0, shape=[1]), name="v1")
v2 = tf.Variable(tf.constant(2.0, shape=[1]), name="v2")
result = v1 + v2

init_op = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init_op)
    #导出当前计算图的GraphDef部分,只需要这一步就可以完成从输入层到输出层的计算过程
    graph_def = tf.get_default_graph().as_graph_def()
    #将图中的变量及其取值转化为常量,同时将图中不必要的节点去掉.本程序只关心加法运算,所以这里只保存[‘add‘]节点,其他和该计算无关的节点就不保存了
    output_graph_def = graph_util.convert_variables_to_constants(sess, graph_def, [add])
    with tf.gfile.GFile("./combine/combined_model.pb", "wb") as f:
    |   f.write(output_graph_def.SerializeToString())

 

 1 #!/usr/bin/env python3                                                                                
 2 #-*- coding:utf-8 -*-                                                                                 
 3 ############################                                                                          
 4 #File Name: save_restore2.py                                                                          
 5 #Brief:                                                                                               
 6 #Author: frank                                                                                        
 7 #Mail: [email protected]                                                                           
 8 #Created Time:2018-06-26 20:30:09                                                                     
 9 ############################                                                                          
10                                                                                                       
11 import tensorflow as tf                                                                               
12 from tensorflow.python.platform import gfile                                                          
13                                                                                                       
14 with tf.Session() as sess:                                                                            
15     model_filename = "combine/combined_model.pb"                                                      
16     #读取保存的模型文件,并将文件解析成对应的GraphDef Protocol Buffer.                                 
17     with gfile.FastGFile(model_filename, "rb") as f:                                                  
18     |   graph_def = tf.GraphDef()                                                                     
19     |   graph_def.ParseFromString(f.read())                                                           
20                                                                                                       
21     #将graph_def中保存的图加载到当前图中.return_elements=["add:0"]给出了返回的张量的名称.在保存的时候给出的是计算节点的名称,所以为"add".在加载的时候给出的是张量的名称,所以是add:0.                        
22     result = tf.import_graph_def(graph_def, return_elements=["add:0"])                                
23     print(sess.run(result))                                                                           

 

以上是关于tensorflow 之模型的保存与加载的主要内容,如果未能解决你的问题,请参考以下文章

二寒假学习计划:Tensorflow之保存加载模型

tensorflow模型的保存与加载

转 tensorflow模型保存 与 加载

TensorFlow的模型保存与加载

TensorFlow2 入门指南 | 19 模型文件的保存与加载

TensorFlow2 入门指南 | 19 模型文件的保存与加载