j-paulus opened a new issue #6407:
URL: https://github.com/apache/incubator-tvm/issues/6407


   When trying to compile a pytorch model that has a reshape() where one or 
more of the sizes is a result from a computation, the computation is not 
evaluated properly, but provided as-is to int() cast. And this fails.
   
   A small example triggering the error:
   ```
   import torch
   from tvm import relay
   
   class TriggerBug(torch.nn.Module):
       def __init__(self):
           super(TriggerBug, self).__init__()
   
       def forward(self, x):
           x_shape = x.shape
           return x.reshape((x_shape[0] * x_shape[1], x_shape[2]))
   
   x_in = torch.randn(2, 3, 4)
   
   torch_model = TriggerBug()
   traced_model = torch.jit.trace(torch_model, x_in)
   
   input_name = 'x_in'
   shape_list = [(input_name, x_in.shape)]
   mod, params = relay.frontend.from_pytorch(traced_model, shape_list)
   
   ```
   
   The result:
   
   > 
   > Traceback (most recent call last):
   >   File "/Users/name/code/python/torch2tvm_reshape_bug.py", line 30, in 
<module>
   >     mod, params = relay.frontend.from_pytorch(traced_model, shape_list)
   >   File 
"/Users/name/opt/anaconda3/envs/env/lib/python3.8/site-packages/tvm-0.7.dev1-py3.8-macosx-10.9-x86_64.egg/tvm/relay/frontend/pytorch.py",
 line 2825, in from_pytorch
   >     ret = convert_operators(_get_operator_nodes(graph.nodes()),
   >   File 
"/Users/name/opt/anaconda3/envs/env/lib/python3.8/site-packages/tvm-0.7.dev1-py3.8-macosx-10.9-x86_64.egg/tvm/relay/frontend/pytorch.py",
 line 2734, in convert_operators
   >     relay_out = relay_op(inputs, _get_input_types(op_node, outputs,
   >   File 
"/Users/name/opt/anaconda3/envs/env/lib/python3.8/site-packages/tvm-0.7.dev1-py3.8-macosx-10.9-x86_64.egg/tvm/relay/frontend/pytorch.py",
 line 1138, in _impl
   >     return _op.transform.reshape(data, new_shape)
   >   File 
"/Users/name/opt/anaconda3/envs/env/lib/python3.8/site-packages/tvm-0.7.dev1-py3.8-macosx-10.9-x86_64.egg/tvm/relay/op/transform.py",
 line 226, in reshape
   >     tempshape.append(int(shape))
   > TypeError: int() argument must be a string, a bytes-like object or a 
number, not 'Call'
   
   The problem is that the contents of `newshape` is a list 
`[CallNode(Op(multiply), [Constant(2), Constant(3)], (nullptr), []), 4]`, the 
first element is of type `tvm.relay.expr.Call`, and this is not evaluated but 
provided to the `int()` cast as-is.
   
   TVM version 0.7.dev1 cloned from git on 03.09.2020.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to