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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
python类的继承实例详解
Mar 30 Python
Python 安装setuptools和pip工具操作方法(必看)
May 22 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
python 读取DICOM头文件的实例
May 07 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
pytorch 准备、训练和测试自己的图片数据的方法
Jan 10 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
Oct 12 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 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
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
js 提交和设置表单的值
2008/12/19 Javascript
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
python正则表达式中的括号匹配问题
2014/12/14 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
python dlib人脸识别代码实例
2019/04/04 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
行政前台岗位职责
2013/12/04 职场文书
大学生村官事迹材料
2014/01/21 职场文书
初三开学计划书
2014/04/27 职场文书
爱心倡议书范文
2014/05/12 职场文书
广告宣传策划方案
2014/05/21 职场文书
财务总监岗位职责
2015/02/03 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js