Search code examples
tensorflowtensorrt

Converted Tensorrt model has different output shape from Tensorflow model?


I have a tensorflow model and converted to tensorrt model. Tensorflow model's uff conversion is shown below. Input is image and output is 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 model output shape is

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

When i run tensorrt, output dimension is (217500,)? How to have same dimension as Tensorflow model?


Solution

  • Yes now everything is solved and I can produce the same result in TensorRT as Tensorflow model's output.

    The issue is TensorRT produce the output array in flattened format. Need to reshape as the dimension as necessary.

    So what I do is check the dimension of Tensorflow's output and reshape accordingly.