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+requests+unittest API接口测试实例(详解)
Jun 10 Python
numpy中的高维数组转置实例
Apr 17 Python
python读取LMDB中图像的方法
Jul 02 Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 Python
简单了解python中对象的取反运算符
Jul 01 Python
python 日期排序的实例代码
Jul 11 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
python使用openpyxl操作excel的方法步骤
May 28 Python
python实现单机五子棋
Aug 28 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 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一个找二层目录的小东东
2012/08/02 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
document.getElementBy("id")与$("#id")有什么区别
2013/09/22 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
node.js中的path.extname方法使用说明
2014/12/09 Javascript
js命名空间写法示例
2015/12/18 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
2017/02/22 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
js实现全选反选不选功能代码详解
2019/04/24 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
基于Django用户认证系统详解
2018/02/21 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
对Python 语音识别框架详解
2018/12/24 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
物理系毕业生自荐信
2013/11/01 职场文书
园林技术个人的自我评价
2014/01/08 职场文书
德育标兵事迹材料
2014/08/24 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python