Tensorflow细节-P112-模型持久化

第一个代码

import tensorflow as tf
v1 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
v2 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
result = v1 + v2

init_op = tf.global_variables_initializer()
saver = tf.train.Saver()

with tf.Session() as sess:
    sess.run(init_op)
    saver.save(sess, "Saved_model/model.ckpt")

看看看,就是上面:注意两个方面
(1)saver = tf.train.Saver()提前设定好
(2)saver.save(sess, "Saved_model/model.ckpt")这里面有sess要注意!

第二个代码

import tensorflow as tf
v1 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
v2 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
result = v1 + v2

init_op = tf.global_variables_initializer()
saver = tf.train.Saver()
with tf.Session() as sess:
    saver.restore(sess, "Saved_model/model.ckpt")
    print sess.run(result)

这里有三个要注意的点
(1)上面定义好了模型(变量名字与第一个代码一样),Saver()里什么都没有
(2)saver.restore(sess, "Saved_model/model.ckpt")里有sess,ckpt是数据
(3)result是读取数据的结果,跟这里的变量没关系

第三个代码

import tensorflow as tf
saver = tf.train.import_meta_graph("Saved_model/model.ckpt.meta")
v3 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))

with tf.Session() as sess:
    saver.restore(sess, "Saved_model/model.ckpt")
    print sess.run(v1)
    print sess.run(v2)
    print sess.run(v3) 

看这里,由于v3是一个变量,要输出的话需要先进行初始化(v1、v2不用)

下面,就是滑动平均了

import tensorflow as tf

v = tf.Variable(0, dtype=tf.float32, name="v")
for variables in tf.global_variables():
    print(variables.name)

ema = tf.train.ExponentialMovingAverage(0.99)
maintain_averages_op = ema.apply(tf.global_variables())
for variables in tf.global_variables():
        print(variables.name)
saver = tf.train.Saver()
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)

    sess.run(tf.assign(v, 10))
    sess.run(maintain_averages_op)
    # 保存的时候会将v:0 ?v/ExponentialMovingAverage:0这两个变量都存下来。
    saver.save(sess, "Saved_model/model2.ckpt")
    print(sess.run([v, ema.average(v)]))


从上面的代码和图片可以看到开始时是一个变量,后来经过maintain_averages_op = ema.apply(tf.global_variables())就多了一个影子变量,这样子,就把影子变量存好了

下面就是加载滑动平均的影子变量了

v = tf.Variable(0, dtype=tf.float32, name="v")

# 通过变量重命名将原来变量v的滑动平均值直接赋值给v。
saver = tf.train.Saver({"v/ExponentialMovingAverage": v})
with tf.Session() as sess:
    saver.restore(sess, "Saved_model/model2.ckpt")
    print sess.run(v)

注意重命名

原文地址:https://www.cnblogs.com/liuboblog/p/11623417.html

时间: 2024-11-04 07:17:24

Tensorflow细节-P112-模型持久化的相关文章

模型持久化

__author__ = 'Oscar_Yang' #-*- coding= utf-8 -*- from sklearn import datasets iris = datasets.load_iris() from sklearn.naive_bayes import GaussianNB from sklearn.externals import joblib import pickle from matplotlib import pyplot as plt gnb = Gaussia

2.1TF模型持久化

目前tf只能保存模型中的variable变量,整个模型还不能保存,版本1.x 保存模型代码 import tensorflow as tf import numpy as np # Save to file # remember to define the same dtype and shape when restore v1 = tf.Variable(tf.constant(1.0,shape=[1]), name='v1') v2 = tf.Variable(tf.constant(2.

TensorFlow(十三):模型的保存与载入

一:保存 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 mnist = input_data.read_data_sets("MNIST_data",one_hot=True) #每个批次100张照片 batch_size = 100 #计算一共有多少个批次 n_batch = mnist.train.num_examples // batch_size

tensorflow训练线性回归模型

完整代码 import tensorflow as tf import matplotlib.pyplot as plt import numpy as np #样本数据 x_train = np.linspace(-1,1,300)[:,np.newaxis] noise = np.random.normal(0, 0.1, x_train.shape) y_train = x_train * 3 + noise + 0.8 #线性模型 W = tf.Variable([0.1],dtype

基于Spark和Tensorflow构建DCN模型进行CTR预测

实验介绍 数据采用Criteo Display Ads.这个数据一共11G,有13个integer features,26个categorical features. Spark 由于数据比较大,且只在一个txt文件,处理前用split -l 400000 train.txt对数据进行切分. 连续型数据利用log进行变换,因为从实时训练的角度上来判断,一般的标准化方式,如Z-Score和最大最小标准化中用到的值都跟某一批数据的整体统计结果有关,换一批数据后标准化就程度就不一样了. 而对于离散型分

吴裕雄 python 神经网络——TensorFlow实现回归模型训练预测MNIST手写数据集

import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("E:\\MNIST_data\\", one_hot=True) #构建回归模型,输入原始真实值(group truth),采用sotfmax函数拟合,并定义损失函数和优化器 #定义回归模型 x = tf.placeholder(tf.float32,

tensorflow和pytorch模型之间转换

参考链接:https://github.com/bermanmaxim/jaccardSegment/blob/master/ckpt_to_dd.py 一. tensorflow模型转pytorch模型 import tensorflow as tf import deepdish as dd import argparse import os import numpy as np def tr(v): # tensorflow weights to pytorch weights if v.

Tensorflow Lite tflite模型的生成与导入

假如想要在ARM板上用tensorflow lite,那么意味着必须要把PC上的模型生成tflite文件,然后在ARM上导入这个tflite文件,通过解析这个文件来进行计算. 根据前面所说,tensorflow的所有计算都会在内部生成一个图,包括变量的初始化,输入定义等,那么即便不是经过训练的神经网络模型,只是简单的三角函数计算,也可以生成一个tflite模型用于在tensorflow lite上导入.所以,这里我就只做了简单的sin()计算来跑一编这个流程. 生成tflite模型 这部分主要是

78、tensorflow滑动平均模型,用来更新迭代的衰减系数

''' Created on 2017年4月21日 @author: weizhen ''' #4.滑动平均模型 import tensorflow as tf #定义一个变量用于计算滑动平均,这个变量的初始值为0. #类型为tf.float32,因为所有需要计算滑动平均的变量必须是实数型 v1=tf.Variable(0,dtype=tf.float32) #这里step变量模拟神经网络中迭代的轮数,可以用于动态控制衰减率 step=tf.Variable(0,trainable=False)