前面的两篇博文

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

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

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

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
############################
#File Name: save_restore.py
#Brief:
#Author: frank
#Mail: frank0903@aliyun.com
#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())
 #!/usr/bin/env python3
#-*- coding:utf-8 -*-
############################
#File Name: save_restore2.py
#Brief:
#Author: frank
#Mail: frank0903@aliyun.com
#Created Time:2018-06-26 20:30:09
############################ import tensorflow as tf
from tensorflow.python.platform import gfile with tf.Session() as sess:
model_filename = "combine/combined_model.pb"
#读取保存的模型文件,并将文件解析成对应的GraphDef Protocol Buffer.
with gfile.FastGFile(model_filename, "rb") as f:
¦ graph_def = tf.GraphDef()
¦ graph_def.ParseFromString(f.read()) #将graph_def中保存的图加载到当前图中.return_elements=["add:0"]给出了返回的张量的名称.在保存的时候给出的是计算节点的名称,所以为"add".在加载的时候给出的是张量的名称,所以是add:0.
result = tf.import_graph_def(graph_def, return_elements=["add:0"])
print(sess.run(result))

源码路径:https://github.com/suonikeyinsuxiao/tf_notes/blob/master/save_restore/save_restore2.py

tensorflow 之模型的保存与加载(三)的更多相关文章

  1. tensorflow 之模型的保存与加载(二)

    上一遍博文提到 有些场景下,可能只需要保存或加载部分变量,并不是所有隐藏层的参数都需要重新训练. 在实例化tf.train.Saver对象时,可以提供一个列表或字典来指定需要保存或加载的变量. #!/ ...

  2. tensorflow 之模型的保存与加载(一)

    怎样让通过训练的神经网络模型得以复用? 本文先介绍简单的模型保存与加载的方法,后续文章再慢慢深入解读. #!/usr/bin/env python3 #-*- coding:utf-8 -*- ### ...

  3. Python之TensorFlow的模型训练保存与加载-3

    一.TensorFlow的模型保存和加载,使我们在训练和使用时的一种常用方式.我们把训练好的模型通过二次加载训练,或者独立加载模型训练.这基本上都是比较常用的方式. 二.模型的保存与加载类型有2种 1 ...

  4. tensorflow模型的保存与加载

    模型的保存与加载一般有三种模式:save/load weights(最干净.最轻量级的方式,只保存网络参数,不保存网络状态),save/load entire model(最简单粗暴的方式,把网络所有 ...

  5. (sklearn)机器学习模型的保存与加载

    需求: 一直写的代码都是从加载数据,模型训练,模型预测,模型评估走出来的,但是实际业务线上咱们肯定不能每次都来训练模型,而是应该将训练好的模型保存下来 ,如果有新数据直接套用模型就行了吧?现在问题就是 ...

  6. pytorch_模型参数-保存,加载,打印

    1.保存模型参数(gen-我自己的模型名字) torch.save(self.gen.state_dict(), os.path.join(self.gen_save_path, 'gen_%d.pt ...

  7. pytorch 中模型的保存与加载,增量训练

     让模型接着上次保存好的模型训练,模型加载 #实例化模型.优化器.损失函数 model = MnistModel().to(config.device) optimizer = optim.Adam( ...

  8. fashion_mnist多分类训练,两种模型的保存与加载

    from tensorflow.python.keras.preprocessing.image import load_img,img_to_array from tensorflow.python ...

  9. tensorflow1.0 模型的保存与加载

    import tensorflow as tf import numpy as np # ##Save to file # W = tf.Variable([[4,5,6],[7,8,9]],dtyp ...

随机推荐

  1. synchronized-异常

    对于web应用程序,异常释放锁的情况,很可能对你的应用程序业务逻辑产生必要严重的错误,比如:执行某个队列任务,很多对象都会去等待第一个对象正常执行的结果返回再次去释放锁,那么其中摸个对象发生执行异常了 ...

  2. [转]SSIS - Connect to Oracle on a 64-bit machine (Updated for SSIS 2008 R2)

    本文转自:http://sqlblog.com/blogs/jorg_klein/archive/2011/06/09/ssis-connect-to-oracle-on-a-64-bit-machi ...

  3. [转]SSIS OLE DB Source中执行带参数的存储过程

    本文转自:http://www.cnblogs.com/michaelxu/archive/2009/10/21/1587450.html 问题描述:执行一个存储过程得到一个多条记录的结果集,然后循环 ...

  4. android 启动socket 失败:socket(af_inet sock_stream 0) 返回-1

    Android 启动socket 失败:socket(af_inet sock_stream 0) 返回-1 原因权限问题, 应该添加如下权限: <uses-permission android ...

  5. python遍历目录的方法 walk listdir

    这篇文章里描述了这些情况: https://www.cnblogs.com/jiaxin359/p/7324077.html 不用递归的时候,用 listdir 需要递归的时候,用walk

  6. CentOS 下 LNMP 环境配置

    安装配置 Nginx 安装配置 MySQL 安装配置 PHP Nginx 与 PHP-FPM 集成 环境配置验证   LNMP 环境代表 Linux 系统下 Nginx + MySQL + PHP 网 ...

  7. Swift教程之运算符

    import Foundation //4.复合赋值操作符 var a = 1 a += 2 //一元减运算符(一个数值前加了符号-,叫作一元减运算符) let three = 3 let minus ...

  8. 在centos中安装mysql详细步骤说明

    Last login: Sun Dec 24 04:55:59 2017 1.安装依赖 [root@node001 ~]# yum install -y perlLoaded plugins: fas ...

  9. 关于HTML、js加密、混淆、源码保护、代码安全,防止解压直接看源码

    一直有人问HTML加密混淆怎么做,其实这在业内是早已很多人研究过的课题.假日期间整理一篇文章分享给大家. 我们先理下需求,加密的目的是什么?加密到什么级别?为此我们可以牺牲什么?我们知道这个世界不存在 ...

  10. html热点区域

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...