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之大话题小函数(2)
Oct 10 Python
Python使用MONGODB入门实例
May 11 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
python特性语法之遍历、公共方法、引用
Aug 08 Python
python可视化实现代码
Jan 15 Python
python单线程文件传输的实例(C/S)
Feb 13 Python
python and or用法详解
Jun 26 Python
python实现代码统计器
Sep 19 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
Jul 09 Python
用python实现一个简单计算器(完整DEMO)
Oct 14 Python
Python获取android设备cpu和内存占用情况
Nov 15 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 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结合安卓客户端实现查询交互实例
2015/05/05 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
python基础教程之元组操作使用详解
2014/03/25 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
法学专业应届生求职信
2013/10/16 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
调查研究项目计划书
2014/04/29 职场文书
卖房授权委托书样本
2014/10/05 职场文书
淘宝好评语句大全
2014/12/31 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
法律意见书范文
2015/06/04 职场文书