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


   When compiling a PyTorch model that contains `torch.stack` followed by 
`BatchNorm`, the BN is unable to determine the input shape. My assumption is 
that the return value from `stack()` is invalid, but the problem may also well 
be in BN.
   
   Minimal code triggering the issue:
   ```
   import torch
   from tvm import relay
   
   class TriggerBug(torch.nn.Module):
       def __init__(self):
           super(TriggerBug, self).__init__()
           self.bn = torch.nn.BatchNorm2d(2)  # input C:(N,C,H,W)
   
       def forward(self, x):
           x = torch.stack((x, x), dim=3)
           #x = torch.stack((x, x), dim=-1)  # this fails equally
           return self.bn(x)
   
   x_in = torch.randn(1, 2, 3)
   torch_model = TriggerBug()
   traced_model = torch.jit.trace(torch_model, (x_in,))
   
   mod, params = relay.frontend.from_pytorch(traced_model, [('x_in', 
x_in.shape)])
   ```
   
   The result is:
   
   >  mod, params = relay.frontend.from_pytorch(traced_model, [('x_in', 
x_in.shape)])
   >   File 
"/Users/name/opt/anaconda3/envs/tvm/lib/python3.7/site-packages/tvm-0.7.dev1-py3.7-macosx-10.9-x86_64.egg/tvm/relay/frontend/pytorch.py",
 line 2820, in from_pytorch
   >     default_dtype=default_dtype)
   >   File 
"/Users/name/opt/anaconda3/envs/tvm/lib/python3.7/site-packages/tvm-0.7.dev1-py3.7-macosx-10.9-x86_64.egg/tvm/relay/frontend/pytorch.py",
 line 2728, in convert_operators
   >     default_dtype=default_dtype))
   >   File 
"/Users/name/opt/anaconda3/envs/tvm/lib/python3.7/site-packages/tvm-0.7.dev1-py3.7-macosx-10.9-x86_64.egg/tvm/relay/frontend/pytorch.py",
 line 870, in _impl
   >     channels = _infer_shape(data)
   >   File 
"/Users/name/opt/anaconda3/envs/tvm/lib/python3.7/site-packages/tvm-0.7.dev1-py3.7-macosx-10.9-x86_64.egg/tvm/relay/frontend/common.py",
 line 486, in infer_shape
   >     out_type = infer_type(inputs, mod=mod)
   >   File 
"/Users/name/opt/anaconda3/envs/tvm/lib/python3.7/site-packages/tvm-0.7.dev1-py3.7-macosx-10.9-x86_64.egg/tvm/relay/frontend/common.py",
 line 465, in infer_type
   >     new_mod = IRModule.from_expr(node)
   >   File 
"/Users/name/opt/anaconda3/envs/tvm/lib/python3.7/site-packages/tvm-0.7.dev1-py3.7-macosx-10.9-x86_64.egg/tvm/ir/module.py",
 line 236, in from_expr
   >     return _ffi_api.Module_FromExpr(expr, funcs, defs)
   >   File 
"/Users/name/opt/anaconda3/envs/tvm/lib/python3.7/site-packages/tvm-0.7.dev1-py3.7-macosx-10.9-x86_64.egg/tvm/_ffi/_ctypes/packed_func.py",
 line 225, in __call__
   >     raise get_last_ffi_error()
   > tvm._ffi.base.TVMError: Traceback (most recent call last):
   >   [bt] (8) 9   libtvm.dylib                        0x000000011e44ca45 
tvm::relay::ExprFunctor<void (tvm::RelayExpr const&)>::VisitExpr(tvm::RelayExpr 
const&) + 133
   >   [bt] (7) 8   libtvm.dylib                        0x000000011e44cd16 
tvm::NodeFunctor<void (tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<void (tvm::RelayExpr 
const&)>*)>::operator()(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<void (tvm::RelayExpr const&)>*) const + 246
   >   [bt] (6) 7   libtvm.dylib                        0x000000011e67785a 
tvm::relay::ExprVisitor::VisitExpr_(tvm::relay::CallNode const*) + 330
   >   [bt] (5) 6   libtvm.dylib                        0x000000011e677248 
tvm::relay::ExprVisitor::VisitExpr(tvm::RelayExpr const&) + 248
   >   [bt] (4) 5   libtvm.dylib                        0x000000011e44ca45 
tvm::relay::ExprFunctor<void (tvm::RelayExpr const&)>::VisitExpr(tvm::RelayExpr 
const&) + 133
   >   [bt] (3) 4   libtvm.dylib                        0x000000011e44cd16 
tvm::NodeFunctor<void (tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<void (tvm::RelayExpr 
const&)>*)>::operator()(tvm::runtime::ObjectRef const&, 
tvm::relay::ExprFunctor<void (tvm::RelayExpr const&)>*) const + 246
   >   [bt] (2) 3   libtvm.dylib                        0x000000011e47c8d8 
tvm::relay::TypeVarEVisitor::VisitExpr_(tvm::ConstructorNode const*) + 56
   >   [bt] (1) 2   libtvm.dylib                        0x000000011dc4ca64 
tvm::IRModuleNode::LookupTypeDef(tvm::GlobalTypeVar const&) const + 420
   >   [bt] (0) 1   libtvm.dylib                        0x000000011da5f7bf 
dmlc::LogMessageFatal::~LogMessageFatal() + 111
   >   File "/Users/puu/code/python/tvm/src/ir/module.cc", line 294
   > TVMError: Check failed: it != type_definitions.end(): There is no 
definition of static_tensor_float32_1_2_3_t
   
   TVM version: 0.7.dev1, installed from git revision 84fa62617
   PyTorch version: 1.7.0.dev20200908
   
   


----------------------------------------------------------------
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