[Relay] [ONNX] Error converting max_pool2d with attribute 'auto_pad'

relay.frontend.from_onnx fails to convert max_pood2d to relay module:

Traceback (most recent call last):

  File "calibration.py", line 637, in <module>
    main()

  File "calibration.py", line 574, in main
    relayConverter = RelayConverter(args.filename[0])

  File "/home/jack/Documents/workspace/quantization/model_converter.py", line 60, in __init__
    mod, params = relay.frontend.from_onnx(model, shape)

  File "/home/jack/Documents/workspace/playground/tvm_0.7.dev1/python/tvm/relay/frontend/onnx.py", line 1895, in from_onnx
    mod, params = g.from_onnx(graph, opset)

  File "/home/jack/Documents/workspace/playground/tvm_0.7.dev1/python/tvm/relay/frontend/onnx.py", line 1723, in from_onnx
    op = self._convert_operator(op_name, inputs, attr, opset)

  File "/home/jack/Documents/workspace/playground/tvm_0.7.dev1/python/tvm/relay/frontend/onnx.py", line 1823, in _convert_operator
    sym = convert_map[op_name](inputs, attrs, self._params)

  File "/home/jack/Documents/workspace/playground/tvm_0.7.dev1/python/tvm/relay/frontend/onnx.py", line 276, in _impl_v1
    custom_check=dimension_constraint())(inputs, attr, params)

  File "/home/jack/Documents/workspace/playground/tvm_0.7.dev1/python/tvm/relay/frontend/common.py", line 417, in __call__
    return get_relay_op(op_name)(*inputs, **new_attrs)

  File "/home/jack/Documents/workspace/playground/tvm_0.7.dev1/python/tvm/relay/op/nn/nn.py", line 665, in max_pool2d
    layout, ceil_mode)

  File "/home/jack/Documents/workspace/playground/tvm_0.7.dev1/python/tvm/_ffi/_ctypes/packed_func.py", line 213, in __call__
    raise get_last_ffi_error()

tvm._ffi.base.TVMError: Traceback (most recent call last):
  [bt] (2) /home/jack/Documents/workspace/playground/tvm_0.7.dev1/build/libtvm.so(TVMFuncCall+0x61) [0x7f229d7191e1]
  [bt] (1) /home/jack/Documents/workspace/playground/tvm_0.7.dev1/build/libtvm.so(+0x8c9271) [0x7f229d357271]
  [bt] (0) /home/jack/Documents/workspace/playground/tvm_0.7.dev1/build/libtvm.so(tvm::Array<tvm::PrimExpr, void> tvm::runtime::TVMPODValue_::AsObjectRef<tvm::Array<tvm::PrimExpr, void> >() const+0x1050) [0x7f229cea9cd0]
  File "/home/jack/Documents/workspace/playground/tvm_0.7.dev1/include/tvm/runtime/packed_func.h", line 1353
TVMError: Check failed: type_code_ == kTVMObjectHandle (0 vs. 8) : expected Object but get int

I did the following fix and got the correct results:

--- a/python/tvm/relay/frontend/onnx.py
+++ b/python/tvm/relay/frontend/onnx.py
@@ -252,7 +252,7 @@ class Pool(OnnxOpConverter):
                 pad_tuple = tuple([val for pair in zip(*pad_tuple) for val in pair])
                 attr['pads'] = pad_tuple
             elif attr['auto_pad'] == 'VALID':
-                attr['pads'] = 0
+                attr['pads'] = (0, 0, 0, 0)
             elif attr['auto_pad'] == 'NOTSET':
                 pass
             else:

I wonder whether this fix is appropriate? Thanks!