MxNet与numpy 的ndarray区别

NDArray API

NDArray 程序包 (mxnet.ndarray) 包含类似于 numpy.ndarray 的 张量计算包. 它的语法很相近, 除了增加了一些处理 I/O 和多设备的调用.

Create NDArray

类似 numpy, 你可以按照下面的方式来创建 mxnet.ndarray :

 import mxnet as mx
 # all-zero array of dimension 100x50
 a = mx.nd.zeros((100, 50))
 # all-one array of dimension 256x32x128x1
 b = mx.nd.ones((256, 32, 128, 1))
 # initialize array with contents
 c = mx.nd.array([[1, 2, 3], [4, 5, 6]])

NDArray operations

Multi-device Support

设备信息是存储在 mxnet.Context 数据结构中. 当我们在 mxnet 中创建 ndarray 的时候, 我们要么使用上下文参数 (默认是 CPU 上下文) 在指定的设备上创建, 或者按照下面的例子中的方式使用 with 表达式:

 import mxnet as mx
 cpu_a = mx.nd.zeros((100, 200))
 cpu_a.context
cpu(0)
 with mx.Context(mx.gpu(0)):
   gpu_a = mx.nd.ones((100, 200))
 gpu_a.context
gpu(0)
 ctx = mx.Context(mx.gpu(0))
 gpu_b = mx.nd.zeros((100, 200), ctx)
 gpu_b.context
gpu(0)

现在我们还 不支持 涉及不同上下文环境中的多个 ndarray 的操作. 为了支持这种情况下的操作, 我们首先使用 copyto 方法将不同的上下文环境中的 ndarray 拷贝到同一个上下文环境中, 然后执行相应的操作:

 import mxnet as mx
 x = mx.nd.zeros((100, 200))
 with mx.Context(mx.gpu(0)):
   y = mx.nd.zeros((100, 200))
 z = x + y
mxnet.base.MXNetError: [13:29:12] src/ndarray/ndarray.cc:33: Check failed: lhs.ctx() == rhs.ctx() operands context mismatch
 cpu_y = mx.nd.zeros((100, 200))
 y.copyto(cpu_y)
 z = x + cpu_y
.. raw:: html

    <script type="text/javascript" src='../../_static/js/auto_module_index.js'></script>

NDArray API Reference

.. automodule:: mxnet.ndarray
    :members:

.. raw:: html

    <script>auto_index("mxnet.ndarray");</script>

NDArray Random API Reference

.. automodule:: mxnet.random
    :members:

.. raw:: html

    <script>auto_index("mxnet.random");</script>

Context API Reference

.. automodule:: mxnet.context
    :members:

.. raw:: html

    <script>auto_index("mxnet.context");</script>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NumPy是在python中处理数据的最基本和最强大的包。 如果您打算从事数据分析或机器学习项目,那么对numpy的充分理解几乎是必须的。 其他用于数据分析的软件包(如pandas)是建立在numpy之上,用于构建机器学习应用的scikit-learn软件包也在numpy上运行。 但对于.NET开发人员来说,却没有这样的强大工具库。 虽然有像Deedle和Math.NET这样的开源库,但它们不是很容易使用,也不能借用很多现有的python代码。 NumSharp(Numerical .NET)可以说是C#中的线性代数库。 它是用C#编写的,符合.netstandard 2.0库标准。 它的目标是让.NET开发人员使用NumPy的语法编写机器学习代码,从而最大限度地借鉴现有大量在python代码的转译成本。 NumSharp使用最新的Span技术安全高效地访问内存,优化每个模拟API的性能,确保最底层的NDArray达到最佳性能状态。NumSharp对于在数组上执行数学和逻辑运算非常有用。 它为.NET中的n阵列和矩阵的操作提供了大量有用的功能。 让我们给出一个代码片段来说明如何使用NumSharp。 // 初始化一个NumSharp实例,类名故意叫NumPy var np = new NumPy(); // 产生一个数字0到9的向量 np.arange(10) // 产生一个3维张量 np.arange(12).reshape(2, 3, 2); // 产生10个0到9的随机数,并转换成5*5的矩阵 np.random.randint(low: 0, high: 10, size: new Shape(5, 5)); 上面的代码是不是看起来否非常接近python代码?简直就是如出一辙。NumSharp的目的就是让你可以轻松的复制粘贴Python代码。 如何安装: PM> Install-Package NumSharp   NumSharp 已被如下项目使用: Pandas.NET Bigtree.MachineLearning CherubNLP BotSharp 标签:numpy

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值