C++ TensorRT 批量推理给出了奇怪的结果
Posted
技术标签:
【中文标题】C++ TensorRT 批量推理给出了奇怪的结果【英文标题】:C++ TensorRT batch inference gives weird results 【发布时间】:2018-11-14 10:13:20 【问题描述】:大家好!
我在 TensorRT 中执行批量推理时遇到问题。当批量大小为 1 时,它就像一个魅力,但当我将其更改为任何其他数字时,它会发出普通的垃圾。
一步一步地,我下载了 TensorRT (5.0) 并将其安装在我的 Ubuntu 18.04 笔记本电脑上,带有 GTX755M。然后我构建了与之配套的样本并在 sampleMNIST 样本上对其进行了测试,它就像一个魅力。然后我开始将每次出现的mParams.batchSize
更改为 10。当然,我还更改了分配内存的大小并修改了结果打印。但是在我重新编译样本后,我得到了完全奇怪的结果——对于每个给定的输入,输出显示为 80% 7 20% 1:
grim@shigoto:~/tensorrt/bin$ ./sample_mnist
Building and running a GPU inference engine for MNIST
Input:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@.*@@@@@@@@@@
@@@@@@@@@@@@@@@@.=@@@@@@@@@@
@@@@@@@@@@@@+@@@.=@@@@@@@@@@
@@@@@@@@@@@% #@@.=@@@@@@@@@@
@@@@@@@@@@@% #@@.=@@@@@@@@@@
@@@@@@@@@@@+ *@@:-@@@@@@@@@@
@@@@@@@@@@@= *@@= @@@@@@@@@@
@@@@@@@@@@@. #@@= @@@@@@@@@@
@@@@@@@@@@= =++.-@@@@@@@@@@
@@@@@@@@@@ =@@@@@@@@@@
@@@@@@@@@@ :*## =@@@@@@@@@@
@@@@@@@@@@:*@@@% =@@@@@@@@@@
@@@@@@@@@@@@@@@% =@@@@@@@@@@
@@@@@@@@@@@@@@@# =@@@@@@@@@@
@@@@@@@@@@@@@@@# =@@@@@@@@@@
@@@@@@@@@@@@@@@* *@@@@@@@@@@
@@@@@@@@@@@@@@@= #@@@@@@@@@@
@@@@@@@@@@@@@@@= #@@@@@@@@@@
@@@@@@@@@@@@@@@=.@@@@@@@@@@@
@@@@@@@@@@@@@@@++@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Output:
0:
1: ********
2:
3:
4:
5:
6:
7: **
8:
9:
此输出重复 10 次。我已经用不同的网络尝试过这个,但结果是相似的,大多数网络给出了 1 次正确的输出和其他 9 次纯垃圾。完整的示例可以在here 找到。我试过谷歌搜索文档,但我不明白我做错了什么。您能否告诉我我做错了什么或如何在 TensorRT 中执行批量推理?
【问题讨论】:
【参考方案1】:你是否也修改了mnist.prototxt
?
尤其是这部分:
input: "data"
input_shape
dim: 1
dim: 1
dim: 28
dim: 28
我认为应该是:
input: "data"
input_shape
dim: 10
dim: 1
dim: 28
dim: 28
【讨论】:
以上是关于C++ TensorRT 批量推理给出了奇怪的结果的主要内容,如果未能解决你的问题,请参考以下文章
yolov7的 TensorRT c++推理,win10, cuda11.4.3 ,cudnn8.2,tensorrt8.2.1.8。
使用 TF-slim 训练的模型与 python 推理完美配合,但使用 C++ 给出完全错误的结果