Python 3.x mxnet导入nd或np以使用数组

Python 3.x mxnet导入nd或np以使用数组,python-3.x,numpy-ndarray,mxnet,Python 3.x,Numpy Ndarray,Mxnet,我开始研究mxnet和gluon,但我对np/nd阵列的使用感到有些困惑 根据gluon网站上的建议,我通过运行以下程序安装了mxnet和gluon: pip install --upgrade mxnet gluoncv 安装mxnet版本1.5.1.post0的。在这种情况下,要使用阵列,我需要: from mxnet import ndarray as nd 另一方面,我发现了一本基于mxnet的深度学习书籍,他们让您通过以下方式安装了更高版本的mxnet: pip install

我开始研究mxnet和gluon,但我对np/nd阵列的使用感到有些困惑

  • 根据gluon网站上的建议,我通过运行以下程序安装了mxnet和gluon:

    pip install --upgrade mxnet gluoncv
    
    安装mxnet版本1.5.1.post0的。在这种情况下,要使用阵列,我需要:

    from mxnet import ndarray as nd
    
  • 另一方面,我发现了一本基于mxnet的深度学习书籍,他们让您通过以下方式安装了更高版本的mxnet:

    pip install mxnet==1.6.0b20190915
    
    在这种情况下,您可以导入ndarray或直接导入np,因此:

    from mxnet import ndarray as nd
    from mxnet import np
    
两者都可以工作(而对于mxnet 1.5.1,从mxnet导入np失败)

如果我们已经有了nd,为什么可以在新版本中导入np?从nd或np创建的数组之间有什么区别吗?
在这两种情况下,我似乎都可以使用mxnet功能(如attach_grad())。例如,以下功能可以正常工作:

from mxnet import np
array = np.array([1,2,3)
array.attach_grad()
谢谢

这里解释了引入
mx.np
模块的动机。要给出
mx.np
mx.nd
模块之间的几个突出区别:

  • mx.np
    模块采用了官方的NumPy operator API,该API已经发展了近二十年,为来自NumPy世界的用户提供了一种轻松过渡到深度学习的体验,而
    mx.nd
    模块的开发没有遵循完善的规范来定义操作员签名,有时会造成混淆,例如,
    dim
    vs
    axis
  • mx.np
    中注册的运营商与官方NumPy运营商有着高度兼容的行为,而
    mx.nd
    运营商则不具备这些方面。例如,在
    mx.np
    中支持零维/标量、零大小、布尔张量和布尔索引,但在
    mx.nd
    中不支持

  • 可以考虑<代码> MX.NP<代码>作为增强版的代码> MX.ND/COD>在可用性、功能和性能方面。code>mx.nd将在未来的版本中逐渐被弃用。

    那么:
    从mxnet导入numpy
    有效吗?是的,有效。而且,正如我所说,以这种方式创建的阵列似乎可以使用mxnet的附加功能,而这些功能通常不适用于numpy阵列。numpy阵列和nd阵列之间的一个重大区别是,nd阵列可以通过传递上下文(例如,nd.array([1,2],ctx=mx.gpu(0))在gpu内存中分配您好,既然mxnet.glion.dataset似乎是ndarray格式的,那么建议如何将其转换为mx.np格式?