为什么TensorFlow Lite比台式机上的TensorFlow慢?

去做

我目前正在研究单图像超分辨率,并且设法冻结了现有的检查点文件并将其转换为tensorflow lite。但是,当使用.tflite文件执行推理时,对一幅图像进行升采样所花费的时间至少是使用.ckpt文件恢复模型时所花费的时间的四倍。

使用.ckpt文件的推断是使用session.run()完成的,而使用.tflite文件的推断是利用解释器.invoke()完成的。两种操作都是在典型PC上运行的Ubuntu 18 VM上完成的。

我要查找有关此问题的更多信息是top在单独的终端中运行,以查看执行任一操作时的CPU利用率。.ckpt文件的利用率达到270%,而.tflite文件的利用率保持在100%左右。

interpreter.set_tensor(input_details[0]['index'], input_image_reshaped)
interpreter.set_tensor(input_details[1]['index'], input_bicubic_image_reshaped)
start = time.time()
interpreter.invoke()
end = time.time()

y = self.sess.run(self.y_, feed_dict={self.x: image.reshape(1, image.shape[0], image.shape[1], ch), self.x2: bicubic_image.reshape(1, self.scale * image.shape[0], self.scale * image.shape[1], ch), self.dropout: 1.0, self.is_training: 0})

一种假设是没有为多线程配置tensorflow lite,另一种认为是针对ARM处理器(而不是我的计算机所运行的Intel处理器)优化了tensorflow lite,因此速度较慢。但是,我不能肯定地说,也不知道如何找到问题的根源-希望有人对此有更多的了解吗?

miaout17

是的,当前的TensorFlow Lite操作内核已针对ARM处理器进行了优化(使用NEON指令集)。如果SSE可用,它将尝试使用NEON_2_SSE使NEON调用适应SSE,因此它仍应与某种SIMD一起运行。但是,我们并未花太多精力来优化此代码路径。

关于线程数。C ++ API中有一个SetNumThreads函数,但尚未在Python API中公开。如果未设置,则基础实现可能会尝试探查可用核心的数量。如果您自己构建代码,则可以尝试更改该值,看看它是否影响结果。

希望这些会有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么台式机(更坚固)上的R速度比台式机(更弱)上的R慢?

为什么Bootstrap CSS(3.2)可以在移动设备和台式机上运行

Tensorflow:为什么'Pip卸载TensorFlow'无法找到TensorFlow

为什么我的网页无法在手机上正常工作,但在台式机上却能正常工作

为什么在台式机上网络上的每个会话/标签上都需要幅度sdk再生设备ID?

为什么Stripe Element在iPhone上无法正常运行,而在Android和台式机上却可以正常运行?

为什么此html表在台式机上响应,但在移动设备上却不响应?

TensorFlow,为什么选择python语言?

为什么不使用 pip 安装 tensorflow?

为什么Tensorflow输出这些简单的结果?

为什么选择Eigen进行TensorFlow?

为什么在Tensorflow中出现此错误?

为什么这个 tensorflow 代码会崩溃?

为什么TensorFlow 2比TensorFlow 1慢得多?

为什么Python Tensorflow会话没有重置,为什么Java Tensorflow会话似乎重置了状态?

为什么ubuntu有几个台式机?

为什么硬盘驱动器不能在笔记本电脑上正常工作,而在台式机上可以正常工作?

如何查看为什么keras / tensorflow模型被卡住?

为什么使用tensorflow gfile?(用于文件I / O)

为什么Tensorflow显示的可用内存少于GPU规格?

为什么我的回调没有在 Tensorflow 中调用?

TensorFlow:如何以及为什么使用SavedModel

为什么tensorflow.one_hot不稀疏?

为什么在Tensorflow Nan中丢失我的简单NN?

为什么TensorFlow matmul()比NumPy乘法()慢得多?

导入tensorflow时为什么会出现DLL错误?

为什么在Tensorflow中将None用作批次维度?

为什么TensorFlow 2和1的RNG不同?

为什么tensorflow不允许我写文件?