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

    

NDArray API Reference

.. automodule:: mxnet.ndarray
    :members:

.. raw:: html

    

NDArray Random API Reference

.. automodule:: mxnet.random
    :members:

.. raw:: html

    

Context API Reference

.. automodule:: mxnet.context
    :members:

.. raw:: html

    

你可能感兴趣的:(Python)