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中lambda与def用法对比实例分析
Apr 30 Python
Python实现针对含中文字符串的截取功能示例
Sep 22 Python
Sanic框架应用部署方法详解
Jul 18 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
Dec 17 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
ipython和python区别详解
Jun 26 Python
python变量的存储原理详解
Jul 10 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
python实现一个简单RPC框架的示例
Oct 28 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
bootstrap table 数据表格行内修改的实现代码
2017/02/13 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
python绘制条形图方法代码详解
2017/12/19 Python
python如何读写csv数据
2018/03/21 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
Django之PopUp的具体实现方法
2019/08/31 Python
Python多线程正确用法实例解析
2020/05/30 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
Python实现一个优先级队列的方法
2020/07/31 Python
Python 多进程、多线程效率对比
2020/11/19 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
台湾流行服饰购物平台:OB严选
2018/01/21 全球购物
上海奥佳笔试题面试题
2016/11/16 面试题
运动会解说词200字
2014/02/06 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
西安兵马俑导游词
2015/02/02 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
一篇文章弄懂Python中的内建函数
2021/08/07 Python
redis中lua脚本使用教程
2021/11/01 Redis