Tensorflow实现在训练好的模型上进行测试


Posted in Python onJanuary 20, 2020

Tensorflow可以使用训练好的模型对新的数据进行测试,有两种方法:第一种方法是调用模型和训练在同一个py文件中,中情况比较简单;第二种是训练过程和调用模型过程分别在两个py文件中。本文将讲解第二种方法。

模型的保存

tensorflow提供可保存训练模型的接口,使用起来也不是很难,直接上代码讲解:

#网络结构
w1 = tf.Variable(tf.truncated_normal([in_units, h1_units], stddev=0.1))
b1 = tf.Variable(tf.zeros([h1_units]))
y = tf.nn.softmax(tf.matmul(w1, x) + b1)
tf.add_to_collection('network-output', y)

x = tf.placeholder(tf.float32, [None, in_units], name='x')
y_ = tf.placeholder(tf.float32, [None, 10], name='y_')
#损失函数与优化函数
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.AdamOptimizer(rate).minimize(cross_entropy)

saver = tf.train.Saver()
with tf.Session() as sess: 
    sess.run(init) 
    saver.save(sess,"save/model.ckpt") 
    train_step.run({x: train_x, y_: train_y})

以上代码就完成了模型的保存,值得注意的是下面这行代码

tf.add_to_collection('network-output', y)

这行代码保存了神经网络的输出,这个在后面使用导入模型过程中起到关键作用。

模型的导入

模型训练并保存后就可以导入来评估模型在测试集上的表现,网上很多文章只用简单的四则运算来做例子,让人看的头大。还是先上代码:

with tf.Session() as sess:
  saver = tf.train.import_meta_graph('./model.ckpt.meta')
  saver.restore(sess, './model.ckpt')# .data文件
  pred = tf.get_collection('network-output')[0]

  graph = tf.get_default_graph()
  x = graph.get_operation_by_name('x').outputs[0]
  y_ = graph.get_operation_by_name('y_').outputs[0]

  y = sess.run(pred, feed_dict={x: test_x, y_: test_y})

讲解一下关键的代码,首先是pred = tf.get_collection('pred_network')[0],这行代码获得训练过程中网络输出的“接口”,简单理解就是,通过tf.get_collection() 这个方法获取了整个网络结构。获得网络结构后我们就需要喂它对应的数据y = sess.run(pred, feed_dict={x: test_x, y_: test_y}) 在训练过程中我们的输入是

x = tf.placeholder(tf.float32, [None, in_units], name='x')
y_ = tf.placeholder(tf.float32, [None, 10], name='y_')

因此导入模型后所需的输入也要与之对应可使用以下代码获得:

x = graph.get_operation_by_name('x').outputs[0]
  y_ = graph.get_operation_by_name('y_').outputs[0]

使用模型的最后一步就是输入测试集,然后按照训练好的网络进行评估

sess.run(pred, feed_dict={x: test_x, y_: test_y})

理解下这行代码,sess.run() 的函数原型为

run(fetches, feed_dict=None, options=None, run_metadata=None)

Tensorflow对 feed_dict 执行fetches操作,因此在导入模型后的运算就是,按照训练的网络计算测试输入的数据。

以上这篇Tensorflow实现在训练好的模型上进行测试就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中封装GObject模块进行图形化程序编程的教程
Apr 14 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
Python之os操作方法(详解)
Jun 15 Python
分析Python读取文件时的路径问题
Feb 11 Python
python sys.argv[]用法实例详解
May 25 Python
pygame游戏之旅 添加icon和bgm音效的方法
Nov 21 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 Python
python 动态迁移solr数据过程解析
Sep 04 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
NumPy中的维度Axis详解
Nov 26 Python
解决tensorflow打印tensor有省略号的问题
Feb 04 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
Python线程条件变量Condition原理解析
Jan 20 #Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 #Python
Python list运算操作代码实例解析
Jan 20 #Python
Python模块future用法原理详解
Jan 20 #Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 #Python
Python JSON编解码方式原理详解
Jan 20 #Python
从训练好的tensorflow模型中打印训练变量实例
Jan 20 #Python
You might like
自定义php类(查找/修改)xml文档
2013/03/26 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
axios学习教程全攻略
2017/03/26 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
Python collections模块实例讲解
2014/04/07 Python
Python中的getopt函数使用详解
2015/07/28 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
基于python实现学生管理系统
2018/10/17 Python
python并发和异步编程实例
2018/11/15 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
班主任对学生的评语
2014/04/26 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
收入证明范本
2015/06/12 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
Python机器学习之逻辑回归
2021/05/11 Python
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
mysql中整数数据类型tinyint详解
2021/12/06 MySQL