MNIST数字识别问题(Tensorflow)

本文介绍了使用Tensorflow解决MNIST数字识别问题,详细阐述了Tensorflow模型的持久化,包括使用tf.train.Saver类保存和加载模型,变量重命名,保存滑动平均模型,以及在实际程序中的应用。通过前向算法、训练模块和验证测试模块的代码示例,展示了完整的训练流程与验证测试过程。
摘要由CSDN通过智能技术生成

一、首先介绍tensorflow持久化的工作原理,持久化代码实现。

1.1使用tf.train.Saver类,以下代码给出了保存tensorflow计算图的方法。

import tensorflow as tf
v1=tf.Variable(tf.constant(1.0,shape=[1]),name="v1")
v2=tf.Variable(tf.constant(2.0,shape=[1]),name="v2")
result=v1+v2
init_op=tf.initialize_all_variables()
saver=tf.train.Saver()
with tf.Session() as sess:
    sess.run(init_op)
    saver.save(sess,"D:/gj20170720/model.ckpt")

1.2加载已保存的模型的方法

import tensorflow as tf
__author__ = 'casgj'
v1=tf.Variable(tf.constant(1.0,shape=[1]),name="v1")
v2=tf.Variable(tf.constant(2.0,shape=[1]),name="v2")
result=v1 + v2
saver=tf.train.Saver()
with tf.Session() as sess:
    saver.restore(sess,"D:/gj20170720/model.ckpt")
    print(sess.run(result))

如果不希望重复定义图上的运算,也可以:

import tensorflow as tf
__author__ = 'casgj'

saver=tf.train.import_meta_graph(("D:/gj20170720/model.ckpt.meta"))

with tf.Session() as sess:
    saver.restore(sess,"D:/gj20170720/model.ckpt")
    print(sess.run


1.3变量重命名的使用

__author__ = 'casgj'
import tensorflow as tf
v1=tf.Variable(tf.constant(1.0,shape=[1]),name="other-v1")
v2=tf.Variable(tf.constant(2.0,shape=[1]),name="other-v2")
saver=tf.train.Saver({
   "v1":v1,"v2":v2})


1.4保存滑动平均模型的运用

_author__ = 'casgj'
import tensorflow as tf
v=tf.Variable(0,dtype=tf.float32,name="v")
for variables in tf.all_variables():
    print(variables.name)

ema=tf.train.ExponentialMovingAverage(0.99)
maintain_averages_op=ema.apply(tf.all_variables())


for variables in tf.all_variables():
    print(variables.name)


saver=tf.train.Saver()
with tf.Session() as sess:
    init_op=tf.initialize_all_variables()
    sess.run(init_op)

    sess.run(tf.assign(v,10))
    sess.run(maintain_averages_op)
    saver.save(sess,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值