blob: b40276b9f1a3f24b3157cac18d6d5b4f328162ac [file] [log] [blame]
# Sparse Symbol API
```eval_rst
.. currentmodule:: mxnet.symbol.sparse
```
## Overview
This document lists the routines of the sparse symbolic expression package:
```eval_rst
.. autosummary::
:nosignatures:
mxnet.symbol.sparse
```
The `Sparse Symbol` API, defined in the `symbol.sparse` package, provides
sparse neural network graphs and auto-differentiation on CPU.
The storage type of a variable is speficied by the `stype` attribute of the variable.
The storage type of a symbolic expression is inferred based on the storage types of the variables and the operators.
```python
>>> a = mx.sym.Variable('a', stype='csr')
>>> b = mx.sym.Variable('b')
>>> c = mx.sym.dot(a, b, transpose_a=True)
>>> type(c)
<class 'mxnet.symbol.Symbol'>
>>> e = c.bind(mx.cpu(), {'a': mx.nd.array([[1,0,0]]).tostype('csr'), 'b':mx.nd.ones((1,2))})
>>> y = e.forward()
# the result storage type of dot(csr.T, dense) is inferred to be `row_sparse`
>>> y
[<RowSparseNDArray 3x2 @cpu(0)>]
>>> y[0].asnumpy()
array([ 1., 1.],
[ 0., 0.],
[ 0., 0.]], dtype=float32)
```
```eval_rst
.. note:: most operators provided in ``mxnet.symbol.sparse`` are similar to those in
``mxnet.symbol`` although there are few differences:
- Only a subset of operators in ``mxnet.symbol`` have specialized implementations in ``mxnet.symbol.sparse``.
Operators such as reduction and broadcasting do not have sparse implementations yet.
- The storage types (``stype``) of sparse operators' outputs depend on the storage types of inputs.
By default the operators not available in ``mxnet.symbol.sparse`` infer "default" (dense) storage type for outputs.
Please refer to the API reference section for further details on specific operators.
- GPU support for ``mxnet.symbol.sparse`` is experimental.
```
In the rest of this document, we list sparse related routines provided by the
`symbol.sparse` package.
## Symbol creation routines
```eval_rst
.. autosummary::
:nosignatures:
zeros_like
mxnet.symbol.var
```
## Symbol manipulation routines
### Changing symbol storage type
```eval_rst
.. autosummary::
:nosignatures:
cast_storage
```
### Indexing routines
```eval_rst
.. autosummary::
:nosignatures:
slice
retain
```
## Mathematical functions
### Arithmetic operations
```eval_rst
.. autosummary::
:nosignatures:
elemwise_add
elemwise_sub
elemwise_mul
negative
dot
add_n
```
### Trigonometric functions
```eval_rst
.. autosummary::
:nosignatures:
sin
tan
arcsin
arctan
degrees
radians
```
### Hyperbolic functions
```eval_rst
.. autosummary::
:nosignatures:
sinh
tanh
arcsinh
arctanh
```
### Reduce functions
```eval_rst
.. autosummary::
:nosignatures:
sum
mean
```
### Rounding
```eval_rst
.. autosummary::
:nosignatures:
round
rint
fix
floor
ceil
trunc
```
### Exponents and logarithms
```eval_rst
.. autosummary::
:nosignatures:
expm1
log1p
```
### Powers
```eval_rst
.. autosummary::
:nosignatures:
sqrt
square
```
### Miscellaneous
```eval_rst
.. autosummary::
:nosignatures:
clip
abs
sign
```
## Neural network
### More
```eval_rst
.. autosummary::
:nosignatures:
make_loss
stop_gradient
mxnet.symbol.contrib.SparseEmbedding
```
## API Reference
<script type="text/javascript" src='../../../_static/js/auto_module_index.js'></script>
```eval_rst
.. automodule:: mxnet.symbol.sparse
:members:
```
<script>auto_index("api-reference");</script>