我开始研究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,
如果已经有了nd,为什么可以在新版本中导入np?从nd或np创建的数组之间有什么区别吗?
似乎在两种情况下我都可以使用mxnet功能(例如attach_grad())...例如,以下作品:
from mxnet import np
array = np.array([1,2,3)
array.attach_grad()
谢谢!
答案 0 :(得分:2)
以下是RFC,解释了引入mx.np
模块的动机。在mx.np
和mx.nd
模块之间给出几个突出的区别:
mx.np
模块采用了已经发展了近二十年的官方NumPy运算符API,为来自NumPy世界的用户提供了轻松的过渡体验,同时mx.nd
该模块未遵循完善的规范来定义操作员签名,有时会引起混淆,例如dim
与axis
。mx.np
中注册的mx.nd
运算符则不具有这些方面。例如,mx.np
支持零维/标量,零大小,布尔张量和布尔索引,但mx.nd
不支持。就可用性,功能和性能而言,您可以将mx.np
视为mx.nd
的增强版本。 mx.nd
在将来的版本中将逐渐弃用。