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使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
Python变量访问权限控制详解
Jun 29 Python
python numpy之np.random的随机数函数使用介绍
Oct 06 Python
开启Django博客的RSS功能的实现方法
Feb 17 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
Python opencv相机标定实现原理及步骤详解
Apr 09 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
Django封装交互接口代码
Jul 12 Python
Python3+selenium配置常见报错解决方案
Aug 28 Python
Python爬虫基础之爬虫的分类知识总结
May 13 Python
python超详细实现完整学生成绩管理系统
Mar 17 Python
Python实现聚类K-means算法详解
Jul 15 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配置心得包含MYSQL5乱码解决
2006/11/20 PHP
PHP编码规范-php coding standard
2007/03/16 PHP
PHP 程序授权验证开发思路
2009/07/09 PHP
php导入导出excel实例
2013/10/25 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
jQuery中prepend()方法用法实例
2014/12/25 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
js的三种继承方式详解
2017/01/21 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
JS学习笔记之数组去重实现方法小结
2019/05/29 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
python中__slots__用法实例
2015/06/04 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
GANT葡萄牙官方商店:拥有美国运动服传统的生活方式品牌
2018/10/18 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
网络维护中文求职信
2014/01/03 职场文书
促销活动总结怎么写
2014/06/25 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
Mysql中mvcc各场景理解应用
2022/08/05 MySQL
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
2022/09/23 HTML / CSS