转换后的 Tensorrt 模型与 Tensorflow 模型的输出形状不同?

Posted

技术标签:

【中文标题】转换后的 Tensorrt 模型与 Tensorflow 模型的输出形状不同?【英文标题】:Converted Tensorrt model has different output shape from Tensorflow model? 【发布时间】:2019-06-03 15:08:01 【问题描述】:

我有一个 tensorflow 模型并转换为 tensorrt 模型。 TensorFlow 模型的 uff 转换如下图所示。输入为图像,输出为 Openpose/concat_stage7

NOTE: UFF has been tested with TensorFlow 1.12.0. Other versions are not guaranteed to work
UFF Version 0.6.3
=== Automatically deduced input nodes ===
[name: "image"
op: "Placeholder"
attr 
  key: "dtype"
  value 
    type: DT_FLOAT
  

attr 
  key: "shape"
  value 
    shape 
      dim 
        size: -1
      
      dim 
        size: -1
      
      dim 
        size: -1
      
      dim 
        size: 3
      
    
  

]
=========================================

=== Automatically deduced output nodes ===
[name: "Openpose/concat_stage7"
op: "ConcatV2"
input: "Mconv7_stage6_L2/BiasAdd"
input: "Mconv7_stage6_L1/BiasAdd"
input: "Openpose/concat_stage7/axis"
attr 
  key: "N"
  value 
    i: 2
  

attr 
  key: "T"
  value 
    type: DT_FLOAT
  

attr 
  key: "Tidx"
  value 
    type: DT_INT32
  

]
==========================================

Using output node Openpose/concat_stage7
Converting to UFF graph
No. nodes: 463
UFF Output written to cmu/cmu_openpose.uff

Tensorflow 模型输出形状为

self.tensor_output = self.graph.get_tensor_by_name('TfPoseEstimator/Openpose/concat_stage7:0')
(?, ?, ?, 57)

当我运行 tensorrt 时,输出维度是 (217500,)? 如何获得与 TensorFlow 模型相同的维度?

【问题讨论】:

【参考方案1】:

是的,现在一切都解决了,我可以在 TensorRT 中生成与 Tensorflow 模型输出相同的结果。

问题是 TensorRT 以扁平格式生成输出数组。需要根据需要重新塑造尺寸。

所以我要做的是检查 Tensorflow 输出的维度并相应地重塑。

【讨论】:

以上是关于转换后的 Tensorrt 模型与 Tensorflow 模型的输出形状不同?的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有 grid_sample 的模型转换为带有 INT8 量化的 TensorRT?

转换TensorFlow 的PB 模型到 UFF格式

从 Keras 构建 TensoRRT 引擎时出错

TensorRT安装记录(8.2.5)

TensorRT 如何处理数据?

OpenCV 和 TensorRT 之间的数据转换 HWC to CHW