You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mxnet.apache.org by GitBox <gi...@apache.org> on 2018/08/22 00:14:51 UTC

[GitHub] samskalicky opened a new issue #12286: Generated NDArray wrappers have wrong function argument declaration

samskalicky opened a new issue #12286: Generated NDArray wrappers have wrong function argument declaration
URL: https://github.com/apache/incubator-mxnet/issues/12286
 
 
   ## Description
   Generate Python wrapper for operators in the NDArray APIs do not have the correct function declaration (argument list). 
   
   ## Error Message:
   `Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
     File "<string>", line 59, in softmax
     File "/Users/sskalic/projects/mxnet/sskalic_branch5/python/mxnet/_ctypes/ndarray.py", line 92, in _imperative_invoke
       ctypes.byref(out_stypes)))
     File "/Users/sskalic/projects/mxnet/sskalic_branch5/python/mxnet/base.py", line 252, in check_call
       raise MXNetError(py_str(_LIB.MXGetLastError()))
   mxnet.base.MXNetError: [17:09:02] src/c_api/../imperative/imperative_utils.h:336: Check failed: num_inputs == infered_num_inputs (0 vs. 1) Operator softmax expects 1 inputs, but got 0 instead.
   
   Stack trace returned 7 entries:
   [bt] (0) 0   libmxnet.so                         0x0000000103e98ae6 dmlc::StackTrace() + 1238
   [bt] (1) 1   libmxnet.so                         0x0000000103e984d5 dmlc::LogMessageFatal::~LogMessageFatal() + 53
   [bt] (2) 2   libmxnet.so                         0x0000000103e94655 dmlc::LogMessageFatal::~LogMessageFatal() + 21
   [bt] (3) 3   libmxnet.so                         0x00000001067a895c mxnet::imperative::SetNumOutputs(nnvm::Op const*, nnvm::NodeAttrs const&, int const&, int*, int*) + 988
   [bt] (4) 4   libmxnet.so                         0x00000001067a5612 MXImperativeInvokeImpl(void*, int, void**, int*, void***, int, char const**, char const**) + 210
   [bt] (5) 5   libmxnet.so                         0x00000001067a8e08 MXImperativeInvokeEx + 184
   [bt] (6) 6   _ctypes.so                          0x000000010319a7b7 ffi_call_unix64 + 79
   `
   
   The expected error message should be of the form:
   
   `
   TypeError: softmax() takes exactly # arguments (0 given)
   `
   
   ## Minimum reproducible example
   `
   import mxnet as mx
   mx.nd.softmax()
   `
   
   ## Steps to reproduce
   Execute above code
   
   ## What have you tried to solve it?
   There is a deep underlying problem with the way we generate wrappers "on-the-fly". Heres an example:
   
   `# generic/unsafe function definition                                                                         
   def sam1(*args, **kwargs):
       print(args)
       print(kwargs)
   
   # specific function definition                                                                               
   def sam2(size,joe):
       print(size)
       print(joe)
   
   #valid function calls                                                                                        
   sam1(2,joe=4)
   sam2(2,joe=4)
   
   #invalid function calls that do not fail                                                                     
   sam1(1,2,3)
   sam1(2,bob=4)
   
   # invalid function calls that do fail                                                                        
   try:
       sam2(1,2,3)
   except TypeError as e:
       print('Dont do that! ',e)
   
   try:
       sam2(2,bob=4)
   except TypeError as e:
       print('Dont do that! ',e)
   `
   
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services