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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
详谈python http长连接客户端
Jun 12 Python
PyCharm代码整体缩进,反向缩进的方法
Jun 25 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
python中pandas对多列进行分组统计的实现
Jun 18 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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类
2006/10/09 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
在Django中使用Sitemap的方法讲解
2015/07/22 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
python sys.argv[]用法实例详解
2018/05/25 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
python机器学习之神经网络实现
2018/10/13 Python
Python字符串对象实现原理详解
2019/07/01 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
Python super()函数使用及多重继承
2020/05/06 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
.net C#面试题
2012/08/28 面试题
市场营销专业毕业生自荐信
2013/11/02 职场文书
浙大毕业生自荐信
2014/01/26 职场文书
门面房租房协议书
2014/08/20 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
升职自我推荐信范文
2015/03/25 职场文书