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解决字典中的值是列表问题的方法
Mar 04 Python
python简单获取数组元素个数的方法
Jul 13 Python
Python数据类型详解(二)列表
May 08 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Django 多环境配置详解
May 14 Python
python with语句的原理与用法详解
Mar 30 Python
python实现五子棋程序
Apr 24 Python
python 5个实用的技巧
Sep 27 Python
用Python提取PDF表格的方法
Apr 11 Python
Pillow图像处理库安装及使用
Apr 12 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php cli 小技巧
2013/06/03 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
php计算年龄精准到年月日
2015/11/17 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
javascript编程起步(第四课)
2007/01/10 Javascript
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
js实现异步循环实现代码
2016/02/16 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
如何用python处理excel表格
2020/06/09 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
网络方面基础面试题
2012/11/16 面试题
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
优秀实习自我鉴定
2013/12/04 职场文书
求职简历的自我评价
2014/01/31 职场文书
期终自我鉴定
2014/02/17 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书