cvpr2020-videomodeling-deployment
cvpr2020-videomodeling-deployment copied to clipboard
IndexError: Index out of range. size: 4, got index 4
Hi,
I am trying to convert slowfast_4x16_resnet50_kinetics400 to TVM using the below notebook:
https://github.com/zhreshold/cvpr2020-videomodeling-deployment/blob/master/03_deploy_video_model_to_tvm.ipynb
But getting below error in line:
gcv.utils.export_tvm(model_name, net, data_shape=(1, 3, 224, 224), preprocess=TvmPreprocess(), target='cuda', ctx=mx.gpu(0), opt_level=3, use_autotvm=False)
Error:
IndexError Traceback (most recent call last)
~/archiconda3/envs/mx1.7/lib/python3.6/site-packages/gluoncv/utils/export_helper.py in export_tvm(path, block, data_shape, epoch, preprocess, layout, ctx, target, opt_level, use_autotvm) 227 228 # convert to relay graph --> 229 sym, params = relay.frontend.from_mxnet(wrapper_block, shape={"data": data_shape}) 230 231 if use_autotvm:
~/archiconda3/envs/mx1.7/lib/python3.6/site-packages/tvm-0.8.dev245+gb2e418cb1-py3.6-linux-aarch64.egg/tvm/relay/frontend/mxnet.py in from_mxnet(symbol, shape, dtype, arg_params, aux_params) 2881 sym = mx.sym.Group(sym) 2882 shape, dtype = _update_shape_dtype(shape, dtype, params) -> 2883 func = _from_mxnet_impl(sym, shape, dtype, params, mod) 2884 elif isinstance(symbol, mx.gluon.Block): 2885 raise NotImplementedError("Only Hybrid Blocks are supported now.")
~/archiconda3/envs/mx1.7/lib/python3.6/site-packages/tvm-0.8.dev245+gb2e418cb1-py3.6-linux-aarch64.egg/tvm/relay/frontend/mxnet.py in _from_mxnet_impl(symbol, shape_dict, dtype_info, params, mod) 2790 assert op_name in _convert_map 2791 op_params = _get_op_params(children, attrs, op_name, node, params) -> 2792 res = _convert_mapop_name 2793 if res is None: 2794 # defer conversion, used in RNN state initialization
~/archiconda3/envs/mx1.7/lib/python3.6/site-packages/tvm-0.8.dev245+gb2e418cb1-py3.6-linux-aarch64.egg/tvm/relay/frontend/mxnet.py in _mx_slice(inputs, attrs) 509 for i, ed in enumerate(end): 510 if ed is None: --> 511 end[i] = input_shape[i] 512 new_attrs = {"begin": list(begin), "end": list(end)} 513 if stride is not None:
~/archiconda3/envs/mx1.7/lib/python3.6/site-packages/tvm-0.8.dev245+gb2e418cb1-py3.6-linux-aarch64.egg/tvm/ir/container.py in getitem(self, idx) 34 35 def getitem(self, idx): ---> 36 return getitem_helper(self, _ffi_node_api.ArrayGetItem, len(self), idx) 37 38 def len(self):
~/archiconda3/envs/mx1.7/lib/python3.6/site-packages/tvm-0.8.dev245+gb2e418cb1-py3.6-linux-aarch64.egg/tvm/runtime/container.py in getitem_helper(obj, elem_getter, length, idx) 55 56 if idx < -length or idx >= length: ---> 57 raise IndexError("Index out of range. size: {}, got index {}".format(length, idx)) 58 if idx < 0: 59 idx += length
IndexError: Index out of range. size: 4, got index 4
Thanks
I would suggest that you use v0.7 as the notebook is tested with tvm version 0.7, the converter may have been updated since then
Built the tvm from source for v0.7 but still facing the same error. My current environment is:
import gluoncv as gcv import mxnet as mx import tvm print('Requires gluoncv>=0.8.0 alpha:', gcv.version) print(mx.version) print(tvm.version)
Requires gluoncv>=0.8.0 alpha: 0.9.0 1.7.0 0.7.0
Thanks it got solved! there was a data shape error.