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中请使用isinstance()判断变量类型
Aug 25 Python
Python实现配置文件备份的方法
Jul 30 Python
将Python代码打包为jar软件的简单方法
Aug 04 Python
深入讲解Python编程中的字符串
Oct 14 Python
python编程实现希尔排序
Apr 13 Python
python 获取当天每个准点时间戳的实例
May 22 Python
python实现名片管理系统项目
Apr 26 Python
如何使用python把ppt转换成pdf
Jun 29 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
python实现逻辑回归的示例
Oct 09 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
pytest配置文件pytest.ini的详细使用
Apr 17 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必须header的解决方法
2014/10/17 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
vue实现倒计时获取验证码效果
2020/04/17 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
Python模块的加载讲解
2019/01/15 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
什么是事务?为什么需要事务?
2012/01/09 面试题
心理健康课教学反思
2014/02/13 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
环保志愿者活动总结
2014/06/27 职场文书
入股协议书范本
2014/11/01 职场文书
学习心理学的体会
2014/11/07 职场文书
安全保证书怎么写
2015/02/28 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
浅析python中特殊文件和特殊函数
2022/02/24 Python
mysql中关键词exists的用法实例详解
2022/06/10 MySQL