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 相关文章推荐
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
跟老齐学Python之使用Python查询更新数据库
Nov 25 Python
python基于phantomjs实现导入图片
May 13 Python
Python实现excel转sqlite的方法
Jul 17 Python
python+matplotlib绘制3D条形图实例代码
Jan 17 Python
Python实现ping指定IP的示例
Jun 04 Python
Python单元测试简单示例
Jul 03 Python
浅谈django orm 优化
Aug 18 Python
python+mysql实现学生信息查询系统
Feb 21 Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
Python plt 利用subplot 实现在一张画布同时画多张图
Feb 26 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
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
js实现蒙版效果
2020/01/11 Javascript
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
如何利用cmp命令比较文件
2016/04/11 面试题
保险公司年会主持词
2014/03/22 职场文书
低碳生活倡议书
2014/04/14 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
英语投诉信范文
2015/07/03 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
详解Js模块化的作用原理和方案
2021/04/29 Javascript
MySQL 查询速度慢的原因
2021/05/25 MySQL