ConcatV2 Bug from Relay Frontend Tensorflow

Hi:

When from_tensorflow from Relay Frontend convert a ConcatV2 operation, an error comes out, and it displays

[15:33:24] /Users/lisiyuan/Codes/deployment/incubator-tvm/src/relay/ir/doc.h:51: text node: ' an internal invariant was violated while typechecking your program [15:33:24] /Users/lisiyuan/Codes/deployment/incubator-tvm/src/relay/op/tensor/transform.cc:1919: Check failed: begin_v < end_v (0 vs. 0) : strided_slice get empty slice at axis 0
Stack trace:
  [bt] (0) 1   libtvm.dylib                        0x0000001c434945c9 dmlc::LogMessageFatal::~LogMessageFatal() + 57
  [bt] (1) 2   libtvm.dylib                        0x0000001c439ce7ab tvm::relay::StridedSliceRel(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&) + 3899
  [bt] (2) 3   libtvm.dylib                        0x0000001c4384689f void tvm::runtime::detail::unpack_call_dispatcher<bool, 0, 4, bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>::run<tvm::runtime::TVMArgValue, tvm::runtime::TVMArgValue, tvm::runtime::TVMArgValue, tvm::runtime::TVMArgValue>(bool (* const&)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&), tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*, tvm::runtime::TVMArgValue&&, tvm::runtime::TVMArgValue&&, tvm::runtime::TVMArgValue&&, tvm::runtime::TVMArgValue&&) + 95
  [bt] (3) 4   libtvm.dylib                        0x0000001c438467f9 std::__1::__function::__func<void tvm::runtime::TypedPackedFunc<bool (tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>::AssignTypedLambda<bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>(bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&))::'lambda'(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*), std::__1::allocator<void tvm::runtime::TypedPackedFunc<bool (tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>::AssignTypedLambda<bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>(bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&))::'lambda'(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)>, void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&) + 137
  [bt] (4) 5   libtvm.dylib                        0x0000001c43b85d35 tvm::TypedEnvFunc<bool (tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>::operator()(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&) const + 325
  [bt] (5) 6   libtvm.dylib                        0x0000001c43b856af tvm::relay::TypeSolver::Solve() + 1071
  [bt] (6) 7   libtvm.dylib                        0x0000001c43b69dac tvm::relay::TypeInferencer::Infer(tvm::relay::Expr) + 108
  [bt] (7) 8   libtvm.dylib                        0x0000001c43b6ac02 tvm::relay::InferType(tvm::relay::Function const&, tvm::relay::Module const&, tvm::relay::GlobalVar const&) + 546
  [bt] (8) 9   libtvm.dylib                        0x0000001c43c532f8 tvm::relay::ModuleNode::Add(tvm::relay::GlobalVar const&, tvm::relay::Function const&, bool) + 1576

; ' should not has tab or newline.
Traceback (most recent call last):

  File "obj_det_part_analysis.py", line 285, in <module>
    extract_sub_graph_def()

  File "obj_det_part_analysis.py", line 272, in extract_sub_graph_def
    mod, params = relay.frontend.from_tensorflow(reshape_graph_def, layout=None)

  File "/Users/lisiyuan/Codes/deployment/incubator-tvm/python/tvm/relay/frontend/tensorflow.py", line 2577, in from_tensorflow
    mod, params = g.from_tensorflow(graph, layout, shape, outputs)

  File "/Users/lisiyuan/Codes/deployment/incubator-tvm/python/tvm/relay/frontend/tensorflow.py", line 2271, in from_tensorflow
    self._mod["main"] = func

  File "/Users/lisiyuan/Codes/deployment/incubator-tvm/python/tvm/relay/module.py", line 85, in __setitem__
    return self._add(var, val)

  File "/Users/lisiyuan/Codes/deployment/incubator-tvm/python/tvm/relay/module.py", line 94, in _add
    _module.Module_Add(self, var, val, update)

  File "/Users/lisiyuan/Codes/deployment/incubator-tvm/python/tvm/_ffi/_ctypes/function.py", line 207, in __call__
    raise get_last_ffi_error()

tvm._ffi.base.TVMError: Traceback (most recent call last):
  [bt] (8) 9   ???                                 0x00007ffee4526720 0x0 + 140732729026336
  [bt] (7) 8   libffi.6.dylib                      0x000000010be99884 ffi_call_unix64 + 76
  [bt] (6) 7   libtvm.dylib                        0x0000001c43d34cd8 TVMFuncCall + 72
  [bt] (5) 6   libtvm.dylib                        0x0000001c43c5bd29 std::__1::__function::__func<tvm::relay::$_2, std::__1::allocator<tvm::relay::$_2>, void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&) + 537
  [bt] (4) 5   libtvm.dylib                        0x0000001c43c532f8 tvm::relay::ModuleNode::Add(tvm::relay::GlobalVar const&, tvm::relay::Function const&, bool) + 1576
  [bt] (3) 4   libtvm.dylib                        0x0000001c43b6ac02 tvm::relay::InferType(tvm::relay::Function const&, tvm::relay::Module const&, tvm::relay::GlobalVar const&) + 546
  [bt] (2) 3   libtvm.dylib                        0x0000001c43b69dc8 tvm::relay::TypeInferencer::Infer(tvm::relay::Expr) + 136
  [bt] (1) 2   libtvm.dylib                        0x0000001c43c2fec9 tvm::relay::ErrorReporter::RenderErrors(tvm::relay::Module const&, bool) + 5433
  [bt] (0) 1   libtvm.dylib                        0x0000001c434945c9 dmlc::LogMessageFatal::~LogMessageFatal() + 57
  [bt] (8) 9   libtvm.dylib                        0x0000001c43c532f8 tvm::relay::ModuleNode::Add(tvm::relay::GlobalVar const&, tvm::relay::Function const&, bool) + 1576
  [bt] (7) 8   libtvm.dylib                        0x0000001c43b6ac02 tvm::relay::InferType(tvm::relay::Function const&, tvm::relay::Module const&, tvm::relay::GlobalVar const&) + 546
  [bt] (6) 7   libtvm.dylib                        0x0000001c43b69dac tvm::relay::TypeInferencer::Infer(tvm::relay::Expr) + 108
  [bt] (5) 6   libtvm.dylib                        0x0000001c43b856af tvm::relay::TypeSolver::Solve() + 1071
  [bt] (4) 5   libtvm.dylib                        0x0000001c43b85d35 tvm::TypedEnvFunc<bool (tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>::operator()(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&) const + 325
  [bt] (3) 4   libtvm.dylib                        0x0000001c438467f9 std::__1::__function::__func<void tvm::runtime::TypedPackedFunc<bool (tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>::AssignTypedLambda<bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>(bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&))::'lambda'(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*), std::__1::allocator<void tvm::runtime::TypedPackedFunc<bool (tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>::AssignTypedLambda<bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>(bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&))::'lambda'(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)>, void (tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*)>::operator()(tvm::runtime::TVMArgs&&, tvm::runtime::TVMRetValue*&&) + 137
  [bt] (2) 3   libtvm.dylib                        0x0000001c4384689f void tvm::runtime::detail::unpack_call_dispatcher<bool, 0, 4, bool (*)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&)>::run<tvm::runtime::TVMArgValue, tvm::runtime::TVMArgValue, tvm::runtime::TVMArgValue, tvm::runtime::TVMArgValue>(bool (* const&)(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&), tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*, tvm::runtime::TVMArgValue&&, tvm::runtime::TVMArgValue&&, tvm::runtime::TVMArgValue&&, tvm::runtime::TVMArgValue&&) + 95
  [bt] (1) 2   libtvm.dylib                        0x0000001c439ce7ab tvm::relay::StridedSliceRel(tvm::Array<tvm::relay::Type, void> const&, int, tvm::Attrs const&, tvm::relay::TypeReporter const&) + 3899
  [bt] (0) 1   libtvm.dylib                        0x0000001c434945c9 dmlc::LogMessageFatal::~LogMessageFatal() + 57
  File "/Users/lisiyuan/Codes/deployment/incubator-tvm/src/relay/ir/error.cc", line 133
TVMError: 
Error(s) have occurred. The program has been annotated with them:

In `main`: 
v0.0.4
fn (%MultipleGridAnchorGenerator/Meshgrid/Shape: Tensor[(1), int32]) {
  %0 = strided_slice(%MultipleGridAnchorGenerator/Meshgrid/Shape, begin=[0], end=[0]) an internal invariant was violated while typechecking your program [15:33:24] /Users/lisiyuan/Codes/deployment/incubator-tvm/src/relay/op/tensor/transform.cc:1919: Check failed: begin_v < end_v (0 vs. 0) : strided_slice get empty slice at axis 0
; ;
  %1 = full(1, shape=[1], dtype="int32");
  %2 = strided_slice(%MultipleGridAnchorGenerator/Meshgrid/Shape, begin=[0], end=[1]);
  %3 = (%0, %1, %2);
  concatenate(%3)
}

The Tensorflow graph_def in tensorboard like this: 39

The is the url of the graph_def pb file