tensorflow 保存模型和取出中间权重例子


Posted in Python onJanuary 24, 2020

下面代码的功能是先训练一个简单的模型,然后保存模型,同时保存到一个pb文件当中,后续可以从pd文件里读取权重值。

import tensorflow as tf
import numpy as np
import os
import h5py
import pickle
from tensorflow.python.framework import graph_util
from tensorflow.python.platform import gfile
#设置使用指定GPU
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
#下面这段代码是在训练好之后将所有的权重名字和权重值罗列出来,训练的时候需要注释掉
reader = tf.train.NewCheckpointReader('./model.ckpt-100')
variables = reader.get_variable_to_shape_map()
for ele in variables:
  print(ele)
  print(reader.get_tensor(ele))


x = tf.placeholder(tf.float32, shape=[None, 1])
y = 4 * x + 4

w = tf.Variable(tf.random_normal([1], -1, 1))
b = tf.Variable(tf.zeros([1]))
y_predict = w * x + b


loss = tf.reduce_mean(tf.square(y - y_predict))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

isTrain = False#设成True去训练模型
train_steps = 100
checkpoint_steps = 50
checkpoint_dir = ''


saver = tf.train.Saver() # defaults to saving all variables - in this case w and b
x_data = np.reshape(np.random.rand(10).astype(np.float32), (10, 1))

with tf.Session() as sess:
  sess.run(tf.global_variables_initializer())
  if isTrain:
    for i in xrange(train_steps):
      sess.run(train, feed_dict={x: x_data})
      if (i + 1) % checkpoint_steps == 0:
        saver.save(sess, checkpoint_dir + 'model.ckpt', global_step=i+1)
  else:
    ckpt = tf.train.get_checkpoint_state(checkpoint_dir)
    if ckpt and ckpt.model_checkpoint_path:
      saver.restore(sess, ckpt.model_checkpoint_path)
    else:
      pass   
    print(sess.run(w))
    print(sess.run(b))
    graph_def = tf.get_default_graph().as_graph_def()
    #通过修改下面的函数,个人觉得理论上能够实现修改权重,但是很复杂,如果哪位有好办法,欢迎指教
    output_graph_def = graph_util.convert_variables_to_constants(sess, graph_def, ['Variable'])
    with tf.gfile.FastGFile('./test.pb', 'wb') as f:
      f.write(output_graph_def.SerializeToString())


with tf.Session() as sess:
#对应最后一部分的写,这里能够将对应的变量取出来
  with gfile.FastGFile('./test.pb', 'rb') as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())
  res = tf.import_graph_def(graph_def, return_elements=['Variable:0'])
  print(sess.run(res))
  print(sess.run(graph_def))

以上这篇tensorflow 保存模型和取出中间权重例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的多重装饰器
Apr 11 Python
Python2.x版本中cmp()方法的使用教程
May 14 Python
win与linux系统中python requests 安装
Dec 04 Python
使用Python & Flask 实现RESTful Web API的实例
Sep 19 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
python模仿网页版微信发送消息功能
Feb 24 Python
python操作kafka实践的示例代码
Jun 19 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
用Python实现Newton插值法
Apr 17 Python
pandas 实现将NaN转换为None
May 14 Python
关于Python中*args和**kwargs的深入理解
Aug 07 Python
tensorflow 模型权重导出实例
Jan 24 #Python
在Tensorflow中查看权重的实现
Jan 24 #Python
tensorflow求导和梯度计算实例
Jan 23 #Python
Tensorflow的梯度异步更新示例
Jan 23 #Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 #Python
Tensorflow实现部分参数梯度更新操作
Jan 23 #Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 #Python
You might like
PHP.MVC的模板标签系统(五)
2006/09/05 PHP
PHP中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
javascript cookies操作集合
2010/04/12 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
python计算最小优先级队列代码分享
2013/12/18 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
市场开发与营销专业求职信
2013/12/31 职场文书
数控技术专科生自我评价
2014/01/08 职场文书
自我介绍演讲稿
2014/01/15 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
挂科检讨书范文
2014/02/20 职场文书
篝火晚会主持词
2014/03/25 职场文书
小学班级口号
2014/06/09 职场文书
单位委托书格式范本
2014/09/29 职场文书
查摆问题整改措施
2014/10/24 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
消费者理赔投诉书
2015/07/02 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL