[SOLVED] Nnvm from_mxnet resnet152 python3 - RecursionError: maximum recursion depth exceeded

nnvm.frontend.from_mxnet failed for resnet152_v1 and v2 on python3 (python2 works fine)

Failed code

import nnvm
import tvm
import numpy as np

from mxnet.gluon.model_zoo.vision import get_model

batch_size = 1
image_shape = (3, 224, 224)
data_shape = (batch_size,) + image_shape
model_name = 'resnet152_v1'

block = get_model(model_name, pretrained=True)
sym, params = nnvm.frontend.from_mxnet(block)

Error

root@d5a405f6b887:~/workplace/resnet50/tmp# ./compile.py 
Traceback (most recent call last):
  File "./compile.py", line 15, in <module>
    sym, params = nnvm.frontend.from_mxnet(block)
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 452, in from_mxnet
    sym = _from_mxnet_impl(sym, {})
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 404, in _from_mxnet_impl
    childs = [_from_mxnet_impl(childs[i], graph) for i in range(len(childs.list_outputs()))]
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 404, in <listcomp>
    childs = [_from_mxnet_impl(childs[i], graph) for i in range(len(childs.list_outputs()))]
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 404, in _from_mxnet_impl
    childs = [_from_mxnet_impl(childs[i], graph) for i in range(len(childs.list_outputs()))]
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 404, in <listcomp>
    childs = [_from_mxnet_impl(childs[i], graph) for i in range(len(childs.list_outputs()))]
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 404, in _from_mxnet_impl
    childs = [_from_mxnet_impl(childs[i], graph) for i in range(len(childs.list_outputs()))]
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 404, in <listcomp>
...
    childs = [_from_mxnet_impl(childs[i], graph) for i in range(len(childs.list_outputs()))]
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 404, in _from_mxnet_impl
    childs = [_from_mxnet_impl(childs[i], graph) for i in range(len(childs.list_outputs()))]
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 404, in <listcomp>
    childs = [_from_mxnet_impl(childs[i], graph) for i in range(len(childs.list_outputs()))]
  File "/root/tvm/nnvm/python/nnvm/frontend/mxnet.py", line 395, in _from_mxnet_impl
    output_index = json.loads(symbol.tojson())['heads'][0][1]
  File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.6/json/decoder.py", line 355, in raw_decode
    obj, end = self.scan_once(s, idx)
RecursionError: maximum recursion depth exceeded while decoding a JSON array from a unicode string

I’ve seen the same error before. You can try setting sys.setrecursionlimit to something big.

setting recursion limit to 1032 solved the issue