leezu opened a new issue #16828: Missing imports in 
python/mxnet/contrib/__init__.py
URL: https://github.com/apache/incubator-mxnet/issues/16828
 
 
   ## Description
   `python/mxnet/contrib/__init__.py` does not `import amp`.
   
   Thus users can't access `mxnet.contrib.amp` without running an additional 
`import mxnet.contrib.amp`.
   
   ## To Reproduce
   `import mxnet; print(mxnet.contrib.amp)`.
   
   ## What have you tried to solve it?
   
   Add the missing imports to `__init__.py`. (Like 
https://github.com/apache/incubator-mxnet/pull/16826/files). Observe the first 
error when trying to import MXNet.
   Try to fix it by changing the order of imports in `python/__init__.py`. 
Observe the second error message.
   Naive fix of adding the imports does not work due to dependency between amp 
and ndarray.
   
   ```
   ---------------------------------------------------------------------------
   ImportError                               Traceback (most recent call last)
   <ipython-input-2-265f02e9c062> in <module>
   ----> 1 import mxnet as mx
   
   ~/src/mxnet-master/python/mxnet/__init__.py in <module>
        29 from . import base
        30 from . import library
   ---> 31 from . import contrib
        32 from . import ndarray
        33 from . import ndarray as nd
   
   ~/src/mxnet-master/python/mxnet/contrib/__init__.py in <module>
        28 from . import tensorboard
        29
   ---> 30 from . import amp
        31 from . import text
        32 from . import onnx
   
   ~/src/mxnet-master/python/mxnet/contrib/amp/__init__.py in <module>
        20 """Automatic mixed precision module."""
        21
   ---> 22 from .amp import *
   
   ~/src/mxnet-master/python/mxnet/contrib/amp/amp.py in <module>
        38 from ...ndarray import NDArray, _DTYPE_NP_TO_MX, _DTYPE_MX_TO_NP
        39 from . import lists
   ---> 40 from ...gluon import trainer
        41 from ... import base
        42 from ...base import c_str_array, SymbolHandle, check_call, _LIB, 
mx_uint, c_array_buf
   
   ~/src/mxnet-master/python/mxnet/gluon/__init__.py in <module>
        24 from .block import *
        25
   ---> 26 from . import nn
        27
        28 from . import rnn
   
   ~/src/mxnet-master/python/mxnet/gluon/nn/__init__.py in <module>
        22 from ..block import *
        23
   ---> 24 from .basic_layers import *
        25
        26 from .conv_layers import *
   
   ~/src/mxnet-master/python/mxnet/gluon/nn/basic_layers.py in <module>
        28 from ..block import Block, HybridBlock
        29 from ..utils import _indent
   ---> 30 from ... import nd, sym
        31 from ...util import is_np_array
        32
   
   ImportError: cannot import name 'nd' from 'mxnet' 
(/home/ANT.AMAZON.COM/lausen/src/mxnet-master/python/mxnet/__init__.py)
   ```
   
   Resolving the conflict by importing ndarray prior to contrib is not possible 
due to some hacks in ndarray:
   
   ```
   KeyError                                  Traceback (most recent call last)
   <ipython-input-1-265f02e9c062> in <module>
   ----> 1 import mxnet as mx
   
   ~/src/mxnet-master/python/mxnet/__init__.py in <module>
        29 from . import base
        30 from . import library
   ---> 31 from . import ndarray
        32 from . import ndarray as nd
        33 from . import numpy
   
   ~/src/mxnet-master/python/mxnet/ndarray/__init__.py in <module>
        18 """NDArray API of MXNet."""
        19
   ---> 20 from . import _internal, contrib, linalg, op, random, sparse, utils, 
image, ndarray, numpy
        21 # pylint: disable=wildcard-import, redefined-builtin
        22 try:
   
   ~/src/mxnet-master/python/mxnet/ndarray/numpy/__init__.py in <module>
        21 from . import linalg
        22 from . import _op, _internal
   ---> 23 from . import _register
        24 from ._op import *  # pylint: disable=wildcard-import
        25
   
   ~/src/mxnet-master/python/mxnet/ndarray/numpy/_register.py in <module>
        19
        20 from ...base import _init_np_op_module
   ---> 21 from ..register import _make_ndarray_function
        22
        23
   
   ~/src/mxnet-master/python/mxnet/ndarray/register.py in <module>
       268     return ndarray_function
       269
   --> 270 _init_op_module('mxnet', 'ndarray', _make_ndarray_function)
       271
       272 # Update operator documentation with added float support
   
   ~/src/mxnet-master/python/mxnet/base.py in _init_op_module(root_namespace, 
module_name, make_op_func)
       611     # use mx.nd.contrib or mx.sym.contrib from now on
       612     contrib_module_name_old = "%s.contrib.%s" % (root_namespace, 
module_name)
   --> 613     contrib_module_old = sys.modules[contrib_module_name_old]
       614     submodule_dict = {}
       615     for op_name_prefix in _OP_NAME_PREFIX_LIST:
   
   KeyError: 'mxnet.contrib.ndarray'
   ```
   

----------------------------------------------------------------
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:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to