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