BUG Report: uff model concat axis int overflow

So, as we known the tf model pipeline is: tf_frozen_model -> uff_model -> trt_engine

Our model use tf.concat([A, B], axis=-1), since tf support negative index.

So the axis’s type for tf’s concat is signed int(maybe 32 or 64 bit), but for uff this is unsigned int(64 bit).

For trt4’ engine, the axis’s type is signed int(64 bit). But for trt5’ engine, the axis’s type is unsigned int(maybe 32 or 64 bit)

So we can find that for trt4: tf_frozen_model(-1) -> -> uff_model(18446744073709551615) -> trt_engine(-1), which means true -> wrong -> true. The converter works fine, the predict result is ok, although the internal result is wrong.

But for trt5: tf_frozen_model(-1) -> -> uff_model(18446744073709551615) -> trt_engine(18446744073709551615)(for 64 bit), which means true -> wrong -> wrong. The converter report error.

I do not test other ops in tf which has axis or other params that support negative index. This maybe a common issue for trt’s uff converter pipeline.

I hope this issue can be fixed asap.

Thank you.


TRT does not support negative axis fields. The network needs to be modified to use a positive value for axis instead.

Note: In previous TRT versions, the concat layer parsing in the UFF Parser wasn’t actually looking at the axis field (so the concat layer always defaulted to axis 0)
In TRT 5.0 we added the correct parsing capability in the UFF Parser so we actually check and set the axis field in the parser.