blob: c7962b9f896f75769a653fa8a9f3d987e26cb3bc [file] [log] [blame]
# NDArray API
## Overview
A `AI::MXNet::NDArray` is a multidimensional container of items of the same type and
size. Various methods for data manipulation and computation are provided.
```perl
pdl> $x = mx->nd->array([[1, 2, 3], [4, 5, 6]])
pdl> print $x->aspdl->shape
[3, 2]
pdl> $y = $x + mx->nd->ones($x->shape)*3
pdl> print $y->aspdl
[
[4 5 6]
[7 8 9]
]
pdl> $z = $y->as_in_context(mx->gpu(0))
pdl> print $z,"\n"
<AI::MXNet::NDArray 2x3 @gpu(0)>
```
A detailed tutorial is available at
[http://mxnet.io/tutorials/basic/ndarray.html](http://mxnet.io/tutorials/basic/ndarray.html).
Note: AI::MXNet::NDarray is similar to numpy.ndarray in some aspects. But the difference is not negligible. For example
- AI::MXNet::NDArray->T does real data transpose to return new a copied array, instead
of returning a view of the input array.
- AI::MXNet::NDArray->dot performs dot between the last axis of the first input array
and the first axis of the second input, while numpy.dot uses the second
last axis of the input array.
In additional, NDArray supports GPU computation and various neural
network layers.
AI::MXNet::NDarray also provides almost same routines as AI::MXNet::symbol. Most
routines between these two packages share the same C++ operator source
codes. But AI::MXNet::NDarray differs from AI::MXNet::Symbol in several aspects:
- AI::MXNet::NDArray adopts imperative programming, namely sentences are executed
step-by-step so that the results can be obtained immediately.