mxnet import nd 或 np 以使用数组

mxnet import nd or np to use arrays

我开始研究 mxnet 和 gluon,但我对 np/nd 数组的用法有些困惑。

两者都有效(而对于 mxnet 1.5.1,from mxnet import np 失败)。

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

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

谢谢!

这里RFC解释引入mx.np模块的动机。给出 mx.npmx.nd 模块之间的一些突出差异:

  1. mx.np模块采用了NumPy官方算子API,已经进化了将近二十年,为从NumPy世界到深度​​学习的用户提供轻松的过渡体验,同时开发mx.nd 模块没有遵循完善的规范来定义运算符签名,这有时会引起混淆,例如 dim vs axis.
  2. mx.np 中注册的运算符与官方 NumPy 运算符具有高度兼容的行为,而 mx.nd 运算符不具有这些方面。例如,zero-dim/scalar、零大小、布尔张量和布尔索引在 mx.np 中受支持,但在 mx.nd 中不受支持。

您可以将 mx.np 视为 mx.nd 在可用性、功能和性能方面的增强版本。 mx.nd 将在未来的版本中逐渐弃用。