tensorflow分类预测引发的性能测试
来源:互联网 发布:甘肃广播电视网络官网 编辑:程序博客网 时间:2024/06/05 12:40
我们把训练模型建立以后,投入到生产环境的时候,问题来了,一张图片进行预测,tensorflow启动加载模型在进行需要跑好几秒钟,才能得出一个预测值。这在真实环境中是不允许的。因为太慢了,为了找出原因所在,开始了如下的探究和测试。
调试确定问题
以google-inception模型中的test.py为例,先在测试模型中记录两个时间,最后相互减就得出所用时间,确定在哪一个环节耗时严重。
# coding=utf-8import tensorflow as tfimport sysimport datetime# 命令行参数,传入要判断的图片路径image_file = sys.argv[1]# print(image_file)# 读取图像image = tf.gfile.FastGFile(image_file, 'rb').read()print (datetime.datetime.now())# 加载图像分类标签labels = []for label in tf.gfile.GFile("output_labels.txt"): labels.append(label.rstrip())# 加载Graphwith tf.gfile.FastGFile("output_graph.pb", 'rb') as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) tf.import_graph_def(graph_def, name='')print (datetime.datetime.now())with tf.Session() as sess: softmax_tensor = sess.graph.get_tensor_by_name('final_result:0') print (datetime.datetime.now()) predict = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': image}) print (datetime.datetime.now()) # 根据分类概率进行排序 top = predict[0].argsort()[-len(predict[0]):][::-1] for index in top: human_string = labels[index] score = predict[0][index] print(human_string, score)
通过这种方法得出以下的数据:
从图中可以看出,有两个耗时严重的地方,对应代码来看就是加载一张test.jpg图片和tensorflow真正处理图片的时候。其中处理图片耗时最严重,近2秒,基本可以确定问题出在这。围绕这个2秒开始了下面的一系列比较和性能测试。
为了确定是内因还是外因,找了另一台电脑进行测试:
由于下面的测试都是围绕这两台电脑之间 ,所以先列出两台机器相关指标。
然后在组装机上跑的结果如下:
用时约2.5秒,用时比笔记本还多。按常理来说:gtx1080ti这么好的显卡没有道理啊,是不是电脑其他配置的问题,如内存,CPU ,主板那些。随后进行了两个机器的性能测试
如下:
测试工具:
phoronix-test-suite :ubuntu下比较好用的一款机器性能测试工具。
# 安装phoronix$sudo apt-get -y install phoronix-test-suite # 列出提供的tests$phoronix-test-suite list-tests#安装test模块$phoronix-test-suite install xxx#模块测试$phoronix-test-suite xxx
以上是常用的就是这几个命令。
测试项目
GPU 内存 CPU 硬盘 主板
通过这个表,可以得出笔记本gpu被虐爆了,8倍的差距,gtx1080ti不是吃素的;内存笔记本是DDR3-1600,台式机是DDR2-800,所以笔记本是他的两倍也可以说通了;硬盘由于组装机是两块SSD,这个也没有太大差别。CPU还在测试中!
0 0
- tensorflow分类预测引发的性能测试
- tensorflow 保存模型预测测试集分类结果
- 性能测试的分类
- 性能测试的分类
- 性能测试-性能测试的分类
- 性能测试重现Session引发的OOM
- 性能测试重现Session引发的OOM
- 2.1 性能测试的分类
- 关于Tensorflow 利用模型预测测试集结果的思路
- 性能测试的概念和分类
- 性能测试的概念和分类
- 性能测试的概念及其分类
- 性能测试的概念及其分类
- 时序预测,TensorFlow的策略
- 时序预测,TensorFlow的策略
- 关于性能测试方法而引发的思考(一)
- LoadRunner性能测试引发的内存溢出 - 善用日志
- 性能测试java协议使用httpclient方法引发的思考
- 爬虫实战--抓取糗事百科前10页数据
- 链表的按条件删除
- JSON数据解析
- java中import导入自定义包
- SQLite Expert Professional 3查看SQLite数据
- tensorflow分类预测引发的性能测试
- 如何在angularjs里面选择一个按钮而不改变其他按钮的颜色
- 设计模式
- web网站无埋点技术,分析数据。
- 集合框架二
- struts2中从后台读取数据到<s:select>
- Windows 10 Build 15060宣布:本周的第三个版本更新
- Java学习【代码2】
- 如何使用dagger2搭建简单清晰的android框架