mxnet导入nd或np以使用数组

时间:2019-11-19 12:05:39

标签: 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==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()

谢谢!

1 个答案:

答案 0 :(得分:2)

以下是RFC,解释了引入mx.np模块的动机。在mx.npmx.nd模块之间给出几个突出的区别:

  1. mx.np模块采用了已经发展了近二十年的官方NumPy运算符API,为来自NumPy世界的用户提供了轻松的过渡体验,同时mx.nd该模块未遵循完善的规范来定义操作员签名,有时会引起混淆,例如dimaxis
  2. mx.np中注册的
  3. 运算符与官方NumPy运算符具有高度兼容的行为,而mx.nd运算符则不具有这些方面。例如,mx.np支持零维/标量,零大小,布尔张量和布尔索引,但mx.nd不支持。

就可用性,功能和性能而言,您可以将mx.np视为mx.nd的增强版本。 mx.nd在将来的版本中将逐渐弃用。