blob: cc8a32dba9aef9ea3d2646414c5655b12d06065b [file] [log] [blame]
# NDArray API
```eval_rst
.. currentmodule:: mxnet.ndarray
```
## Overview
This document lists the routines of the *n*-dimensional array package:
```eval_rst
.. autosummary::
:nosignatures:
mxnet.ndarray
```
The `NDArray` API, defined in the `ndarray` (or simply `nd`) package, provides
imperative tensor operations on CPU/GPU.
An `NDArray` represents a multi-dimensional, fixed-size homogenous array.
```python
>>> x = mx.nd.array([[1, 2, 3], [4, 5, 6]])
>>> type(x)
<class 'mxnet.ndarray.NDArray'>
>>> x.shape
(2, 3)
>>> y = x + mx.nd.ones(x.shape)*3
>>> print(y.asnumpy())
[[ 4. 5. 6.]
[ 7. 8. 9.]]
>>> z = y.as_in_context(mx.gpu(0))
>>> print(z)
<NDArray 2x3 @gpu(0)>
```
A detailed tutorial is available at
[NDArray - Imperative tensor operations on CPU/GPU](http://mxnet.io/tutorials/basic/ndarray.html).
<br><br>
```eval_rst
.. note:: ``mxnet.ndarray`` is similar to ``numpy.ndarray`` in some aspects. But the differences are not negligible. For instance:
- ``mxnet.ndarray.NDArray.T`` does real data transpose to return new a copied
array, instead of returning a view of the input array.
- ``mxnet.ndarray.dot`` performs dot product 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 addition, ``mxnet.ndarray.NDArray`` supports GPU computation and various neural
network layers.
.. note:: ``ndarray`` provides almost the same routines as ``symbol``. Most
routines between these two packages share the source code. But ``ndarray``
differs from ``symbol`` in few aspects:
- ``ndarray`` adopts imperative programming, namely sentences are executed
step-by-step so that the results can be obtained immediately whereas
``symbol`` adopts declarative programming.
- Most binary operators in ``ndarray`` such as ``+`` and ``>`` have
broadcasting enabled by default.
```
In the rest of this document, we first overview the methods provided by the
`ndarray.NDArray` class and its subclasses, and then list other routines
provided by the `ndarray` package.
The `ndarray` package provides several classes:
```eval_rst
.. autosummary::
:nosignatures:
NDArray
sparse.CSRNDArray
sparse.RowSparseNDArray
```
We summarize the interface for each class in the following sections.
## The `NDArray` class
### Array attributes
```eval_rst
.. autosummary::
:nosignatures:
NDArray.shape
NDArray.size
NDArray.context
NDArray.dtype
NDArray.stype
```
### Array conversion
```eval_rst
.. autosummary::
:nosignatures:
NDArray.copy
NDArray.copyto
NDArray.as_in_context
NDArray.asnumpy
NDArray.asscalar
NDArray.astype
NDArray.tostype
```
### Array creation
```eval_rst
.. autosummary::
:nosignatures:
NDArray.zeros_like
NDArray.ones_like
```
### Array change shape
```eval_rst
.. autosummary::
:nosignatures:
NDArray.T
NDArray.reshape
NDArray.flatten
NDArray.expand_dims
NDArray.split
```
### Array expand elements
```eval_rst
.. autosummary::
:nosignatures:
NDArray.broadcast_to
NDArray.broadcast_axes
NDArray.tile
NDArray.pad
```
### Array rearrange elements
```eval_rst
.. autosummary::
:nosignatures:
NDArray.transpose
NDArray.swapaxes
NDArray.flip
```
### Array reduction
```eval_rst
.. autosummary::
:nosignatures:
NDArray.sum
NDArray.nansum
NDArray.prod
NDArray.nanprod
NDArray.mean
NDArray.max
NDArray.min
NDArray.norm
```
### Array rounding
```eval_rst
.. autosummary::
:nosignatures:
NDArray.round
NDArray.rint
NDArray.fix
NDArray.floor
NDArray.ceil
NDArray.trunc
```
### Array sorting and searching
```eval_rst
.. autosummary::
:nosignatures:
NDArray.sort
NDArray.argsort
NDArray.topk
NDArray.argmax
NDArray.argmin
```
### Arithmetic operations
```eval_rst
.. autosummary::
:nosignatures:
NDArray.__add__
NDArray.__sub__
NDArray.__rsub__
NDArray.__neg__
NDArray.__mul__
NDArray.__div__
NDArray.__rdiv__
NDArray.__mod__
NDArray.__rmod__
NDArray.__pow__
```
### In-place arithmetic operations
```eval_rst
.. autosummary::
:nosignatures:
NDArray.__iadd__
NDArray.__isub__
NDArray.__imul__
NDArray.__idiv__
NDArray.__imod__
```
### Comparison operators
```eval_rst
.. autosummary::
:nosignatures:
NDArray.__lt__
NDArray.__le__
NDArray.__gt__
NDArray.__ge__
NDArray.__eq__
NDArray.__ne__
```
### Indexing
```eval_rst
.. autosummary::
:nosignatures:
NDArray.__getitem__
NDArray.__setitem__
NDArray.slice
NDArray.slice_axis
NDArray.take
NDArray.one_hot
NDArray.pick
```
### Lazy evaluation
```eval_rst
.. autosummary::
:nosignatures:
NDArray.wait_to_read
```
### Miscellaneous
```eval_rst
.. autosummary::
:nosignatures:
NDArray.clip
NDArray.sign
```
## The `sparse.RowSparseNDArray` Class
```eval_rst
.. autosummary::
:nosignatures:
sparse.RowSparseNDArray.copyto
sparse.RowSparseNDArray.tostype
sparse.RowSparseNDArray.__setitem__
sparse.RowSparseNDArray.__getitem__
sparse.RowSparseNDArray.data
sparse.RowSparseNDArray.indices
```
## The `sparse.CSRNDArray` Class
```eval_rst
.. autosummary::
:nosignatures:
sparse.CSRNDArray.copyto
sparse.CSRNDArray.tostype
sparse.CSRNDArray.__setitem__
sparse.CSRNDArray.__getitem__
sparse.CSRNDArray.data
sparse.CSRNDArray.indices
sparse.CSRNDArray.indptr
```
## Array creation routines
```eval_rst
.. autosummary::
:nosignatures:
array
empty
zeros
zeros_like
ones
ones_like
full
arange
load
save
```
## Array manipulation routines
### Changing array shape and type
```eval_rst
.. autosummary::
:nosignatures:
cast
reshape
flatten
expand_dims
```
### Expanding array elements
```eval_rst
.. autosummary::
:nosignatures:
broadcast_to
broadcast_axes
repeat
tile
pad
```
### Rearranging elements
```eval_rst
.. autosummary::
:nosignatures:
transpose
swapaxes
flip
```
### Joining and splitting arrays
```eval_rst
.. autosummary::
:nosignatures:
concat
split
```
### Indexing routines
```eval_rst
.. autosummary::
:nosignatures:
slice
slice_axis
take
batch_take
one_hot
pick
where
```
## Mathematical functions
### Arithmetic operations
```eval_rst
.. autosummary::
:nosignatures:
add
subtract
negative
multiply
divide
modulo
dot
batch_dot
add_n
```
### Trigonometric functions
```eval_rst
.. autosummary::
:nosignatures:
sin
cos
tan
arcsin
arccos
arctan
broadcast_hypot
degrees
radians
```
### Hyperbolic functions
```eval_rst
.. autosummary::
:nosignatures:
sinh
cosh
tanh
arcsinh
arccosh
arctanh
```
### Reduce functions
```eval_rst
.. autosummary::
:nosignatures:
sum
nansum
prod
nanprod
mean
max
min
norm
```
### Rounding
```eval_rst
.. autosummary::
:nosignatures:
round
rint
fix
floor
ceil
trunc
```
### Exponents and logarithms
```eval_rst
.. autosummary::
:nosignatures:
exp
expm1
log
log10
log2
log1p
```
### Powers
```eval_rst
.. autosummary::
:nosignatures:
power
sqrt
rsqrt
square
```
### Logic functions
```eval_rst
.. autosummary::
:nosignatures:
equal
not_equal
greater
greater_equal
lesser
lesser_equal
```
### Random sampling
```eval_rst
.. autosummary::
:nosignatures:
random_uniform
random_normal
random_gamma
random_exponential
random_poisson
random_negative_binomial
random_generalized_negative_binomial
sample_uniform
sample_normal
sample_gamma
sample_exponential
sample_poisson
sample_negative_binomial
sample_generalized_negative_binomial
mxnet.random.seed
```
### Sorting and searching
```eval_rst
.. autosummary::
:nosignatures:
sort
topk
argsort
argmax
argmin
```
### Linear Algebra
```eval_rst
.. autosummary::
:nosignatures:
linalg_gemm
linalg_gemm2
linalg_potrf
linalg_potri
linalg_trmm
linalg_trsm
linalg_sumlogdiag
```
### Miscellaneous
```eval_rst
.. autosummary::
:nosignatures:
maximum
minimum
clip
abs
sign
gamma
gammaln
```
## Neural network
### Basic
```eval_rst
.. autosummary::
:nosignatures:
FullyConnected
Convolution
Activation
BatchNorm
Pooling
SoftmaxOutput
softmax
log_softmax
```
### More
```eval_rst
.. autosummary::
:nosignatures:
Correlation
Deconvolution
RNN
Embedding
LeakyReLU
InstanceNorm
L2Normalization
LRN
ROIPooling
SoftmaxActivation
Dropout
BilinearSampler
GridGenerator
UpSampling
SpatialTransformer
LinearRegressionOutput
LogisticRegressionOutput
MAERegressionOutput
SVMOutput
softmax_cross_entropy
smooth_l1
IdentityAttachKLSparseReg
MakeLoss
BlockGrad
Custom
```
## Contrib
```eval_rst
.. warning:: This package contains experimental APIs and may change in the near future.
```
The `contrib.ndarray` module contains many useful experimental APIs for new features. This is a place for the community to try out the new features, so that feature contributors can receive feedback.
```eval_rst
.. currentmodule:: mxnet.contrib.ndarray
.. autosummary::
:nosignatures:
CTCLoss
DeformableConvolution
DeformablePSROIPooling
MultiBoxDetection
MultiBoxPrior
MultiBoxTarget
MultiProposal
PSROIPooling
Proposal
count_sketch
ctc_loss
dequantize
fft
ifft
quantize
```
## API Reference
<script type="text/javascript" src='../../_static/js/auto_module_index.js'></script>
```eval_rst
.. autoclass:: mxnet.ndarray.NDArray
:members:
:special-members:
.. autoclass:: mxnet.ndarray.sparse.CSRNDArray
:members:
:special-members:
.. autoclass:: mxnet.ndarray.sparse.RowSparseNDArray
:members:
:special-members:
.. automodule:: mxnet.ndarray
:members:
:imported-members:
:special-members:
:exclude-members: CachedOp, BaseSparseNDArray, NDArray, CSRNDArray, RowSparseNDArray
.. automodule:: mxnet.random
:members:
.. automodule:: mxnet.contrib.ndarray
:members:
```
<script>auto_index("api-reference");</script>