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在多玩图片上下载妹子图的实现代码
Aug 13 Python
python求解水仙花数的方法
May 11 Python
python获得一个月有多少天的方法
Jun 04 Python
详解Python设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
Python实现文件复制删除
Apr 19 Python
视觉直观感受若干常用排序算法
Apr 13 Python
centos6.4下python3.6.1安装教程
Jul 21 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
在CMD命令行中运行python脚本的方法
May 12 Python
python 字符串和整数的转换方法
Jun 25 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
Python request操作步骤及代码实例
Apr 13 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 MVC框架skymvc支持多文件上传
2016/05/26 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
基于python select.select模块通信的实例讲解
2017/09/21 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
基于python实现删除指定文件类型
2020/07/21 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
为什么要使用servlet
2016/01/17 面试题
农村婚礼证婚词
2014/01/10 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
主题团日活动总结
2014/06/25 职场文书
公证委托书标准格式
2014/09/11 职场文书
如何写股份合作协议书
2014/09/11 职场文书
2015公司年度工作总结
2015/05/14 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
推普标语口号大全
2015/12/26 职场文书
创业计划书之寿司
2019/07/19 职场文书
Nginx反向代理、重定向
2022/04/13 Servers