blob: e1dcac1bd2fa53ec792c405c18705b26e4c94777 [file] [log] [blame]
``mx.symbol.Embedding``
==============================================
Description
----------------------
Maps integer indices to vector representations (embeddings).
This operator maps words to real-valued vectors in a high-dimensional space,
called word embeddings. These embeddings can capture semantic and syntactic properties of the words.
For example, it has been noted that in the learned embedding spaces, similar words tend
to be close to each other and dissimilar words far apart.
For an input array of shape (d1, ..., dK),
the shape of an output array is (d1, ..., dK, output_dim).
All the input values should be integers in the range [0, input_dim).
If the input_dim is ip0 and output_dim is op0, then shape of the embedding weight matrix must be
(ip0, op0).
When "sparse_grad" is False, if any index mentioned is too large, it is replaced by the index that
addresses the last vector in an embedding matrix.
When "sparse_grad" is True, an error will be raised if invalid indices are found.
**Example**::
input_dim = 4
output_dim = 5
// Each row in weight matrix y represents a word. So, y = (w0,w1,w2,w3)
y = [[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
[ 15., 16., 17., 18., 19.]]
// Input array x represents n-grams(2-gram). So, x = [(w1,w3), (w0,w2)]
x = [[ 1., 3.],
[ 0., 2.]]
// Mapped input x to its vector representation y.
Embedding(x, y, 4, 5) = [[[ 5., 6., 7., 8., 9.],
[ 15., 16., 17., 18., 19.]],
[[ 0., 1., 2., 3., 4.],
[ 10., 11., 12., 13., 14.]]]
The storage type of weight can be either row_sparse or default.
.. note::
If "sparse_grad" is set to True, the storage type of gradient w.r.t weights will be
"row_sparse". Only a subset of optimizers support sparse gradients, including SGD, AdaGrad
and Adam. Note that by default lazy updates is turned on, which may perform differently
from standard updates. For more details, please check the Optimization API at:
https://mxnet.incubator.apache.org/api/python/optimization/optimization.html
Usage
----------
.. code:: r
mx.symbol.Embedding(...)
Arguments
------------------
+----------------------------------------+------------------------------------------------------------+
| Argument | Description |
+========================================+============================================================+
| ``data`` | NDArray-or-Symbol. |
| | |
| | The input array to the embedding operator. |
+----------------------------------------+------------------------------------------------------------+
| ``weight`` | NDArray-or-Symbol. |
| | |
| | The embedding weight matrix. |
+----------------------------------------+------------------------------------------------------------+
| ``input.dim`` | int, required. |
| | |
| | Vocabulary size of the input indices. |
+----------------------------------------+------------------------------------------------------------+
| ``output.dim`` | int, required. |
| | |
| | Dimension of the embedding vectors. |
+----------------------------------------+------------------------------------------------------------+
| ``dtype`` | {'float16', 'float32', 'float64', 'int32', 'int64', |
| | 'int8', 'uint8'},optional, |
| | default='float32'. |
| | |
| | Data type of weight. |
+----------------------------------------+------------------------------------------------------------+
| ``sparse.grad`` | boolean, optional, default=0. |
| | |
| | Compute row sparse gradient in the backward calculation. |
| | If set to True, the grad's storage type is |
| | row_sparse. |
+----------------------------------------+------------------------------------------------------------+
| ``name`` | string, optional. |
| | |
| | Name of the resulting symbol. |
+----------------------------------------+------------------------------------------------------------+
Value
----------
``out`` The result mx.symbol
Link to Source Code: http://github.com/apache/incubator-mxnet/blob/1.6.0/src/operator/tensor/indexing_op.cc#L539