<!DOCTYPE html >
<html>
        <head>
          <title>NDArrayBase - MXNet - org.apache.mxnet.javaapi.NDArrayBase</title>
          <meta name="description" content="NDArrayBase - MXNet - org.apache.mxnet.javaapi.NDArrayBase" />
          <meta name="keywords" content="NDArrayBase MXNet org.apache.mxnet.javaapi.NDArrayBase" />
          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
          
      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
      <script type="text/javascript" src="../../../../lib/jquery.js" id="jquery-js"></script>
      <script type="text/javascript" src="../../../../lib/jquery-ui.js"></script>
      <script type="text/javascript" src="../../../../lib/template.js"></script>
      <script type="text/javascript" src="../../../../lib/tools.tooltip.js"></script>
      
      <script type="text/javascript">
         if(top === self) {
            var url = '../../../../index.html';
            var hash = 'org.apache.mxnet.javaapi.NDArrayBase';
            var anchor = window.location.hash;
            var anchor_opt = '';
            if (anchor.length >= 1)
              anchor_opt = '@' + anchor.substring(1);
            window.location.href = url + '#' + hash + anchor_opt;
         }
   	  </script>
    
        </head>
        <body class="type">
      <div id="definition">
        <img alt="Class" src="../../../../lib/class_big.png" />
        <p id="owner"><a href="../../../package.html" class="extype" name="org">org</a>.<a href="../../package.html" class="extype" name="org.apache">apache</a>.<a href="../package.html" class="extype" name="org.apache.mxnet">mxnet</a>.<a href="package.html" class="extype" name="org.apache.mxnet.javaapi">javaapi</a></p>
        <h1>NDArrayBase</h1><h3><span class="morelinks"><div>Related Doc:
            <a href="package.html" class="extype" name="org.apache.mxnet.javaapi">package javaapi</a>
          </div></span></h3><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      </div>

      <h4 id="signature" class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <span class="name">NDArrayBase</span><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
      </span>
      </h4>
      
          <div id="comment" class="fullcommenttop"><div class="toggleContainer block">
          <span class="toggle">Linear Supertypes</span>
          <div class="superTypes hiddenContent"><span class="extype" name="scala.AnyRef">AnyRef</span>, <span class="extype" name="scala.Any">Any</span></div>
        </div><div class="toggleContainer block">
            <span class="toggle">Known Subclasses</span>
            <div class="subClasses hiddenContent"><a href="NDArray$.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></div>
          </div></div>
        

      <div id="mbrsel">
        <div id="textfilter"><span class="pre"></span><span class="input"><input id="mbrsel-input" type="text" accesskey="/" /></span><span class="post"></span></div>
        <div id="order">
              <span class="filtertype">Ordering</span>
              <ol>
                
                <li class="alpha in"><span>Alphabetic</span></li>
                <li class="inherit out"><span>By Inheritance</span></li>
              </ol>
            </div>
        <div id="ancestors">
                <span class="filtertype">Inherited<br />
                </span>
                <ol id="linearization">
                  <li class="in" name="org.apache.mxnet.javaapi.NDArrayBase"><span>NDArrayBase</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li>
                </ol>
              </div><div id="ancestors">
            <span class="filtertype"></span>
            <ol>
              <li class="hideall out"><span>Hide All</span></li>
              <li class="showall in"><span>Show All</span></li>
            </ol>
          </div>
        <div id="visbl">
            <span class="filtertype">Visibility</span>
            <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
          </div>
      </div>

      <div id="template">
        <div id="allMembers">
        <div id="constructors" class="members">
              <h3>Instance Constructors</h3>
              <ol><li name="org.apache.mxnet.javaapi.NDArrayBase#&lt;init&gt;" visbl="pub" data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="&lt;init&gt;():org.apache.mxnet.javaapi.NDArrayBase"></a>
      <a id="&lt;init&gt;:NDArrayBase"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">new</span>
      </span>
      <span class="symbol">
        <span class="name">NDArrayBase</span><span class="params">()</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@&lt;init&gt;():org.apache.mxnet.javaapi.NDArrayBase" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      
    </li></ol>
            </div>

        

        <div id="values" class="values members">
              <h3>Abstract Value Members</h3>
              <ol><li name="org.apache.mxnet.javaapi.NDArrayBase#Activation" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="Activation(data:org.apache.mxnet.javaapi.NDArray,act_type:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="Activation(NDArray,String,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">Activation</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="act_type">act_type: <span class="extype" name="scala.Predef.String">String</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@Activation(data:org.apache.mxnet.javaapi.NDArray,act_type:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies an activation function element-wise to the input.

The following activation functions are supported:

- `relu`: Rectified Linear <span class="std">Unit</span>, :math:`y = max(x, <span class="num">0</span>)`
- `sigmoid`: :math:`y = \frac{<span class="num">1</span>}{<span class="num">1</span> + exp(-x)}`
- `tanh`: Hyperbolic tangent, :math:`y = \frac{exp(x) - exp(-x)}{exp(x) + exp(-x)}`
- `softrelu`: Soft ReLU, or SoftPlus, :math:`y = log(<span class="num">1</span> + exp(x))`
- `softsign`: :math:`y = \frac{x}{<span class="num">1</span> + abs(x)}`



Defined in src/operator/nn/activation.cc:L164</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt class="param">act_type</dt><dd class="cmt"><p>Activation function to be applied.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#BatchNorm" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="BatchNorm(po:org.apache.mxnet.javaapi.BatchNormParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="BatchNorm(BatchNormParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">BatchNorm</span><span class="params">(<span name="po">po: <a href="BatchNormParam.html" class="extype" name="org.apache.mxnet.javaapi.BatchNormParam">BatchNormParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@BatchNorm(po:org.apache.mxnet.javaapi.BatchNormParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Batch normalization.

Normalizes a data batch by mean and variance, and applies a scale ``gamma`` as
well as offset ``beta``.

Assume the input has more than one dimension and we normalize along axis <span class="num">1.</span>
We first compute the mean and variance along <span class="kw">this</span> axis:

.. math::

  data\_mean[i] = mean(data[:,i,:,...]) \\
  data\_var[i] = <span class="kw">var</span>(data[:,i,:,...])

Then compute the normalized output, which has the same shape as input, as following:

.. math::

  out[:,i,:,...] = \frac{data[:,i,:,...] - data\_mean[i]}{\sqrt{data\_var[i]+\epsilon}} * gamma[i] + beta[i]

Both *mean* and *<span class="kw">var</span>* returns a scalar by treating the input as a vector.

Assume the input has size *k* on axis <span class="num">1</span>, then both ``gamma`` and ``beta``
have shape *(k,)*. If ``output_mean_var`` is set to be <span class="kw">true</span>, then outputs both ``data_mean`` and
the inverse of ``data_var``, which are needed <span class="kw">for</span> the backward pass. Note that gradient of these
two outputs are blocked.

Besides the inputs and the outputs, <span class="kw">this</span> operator accepts two auxiliary
states, ``moving_mean`` and ``moving_var``, which are *k*-length
vectors. They are global statistics <span class="kw">for</span> the whole dataset, which are updated
by::

  moving_mean = moving_mean * momentum + data_mean * (<span class="num">1</span> - momentum)
  moving_var = moving_var * momentum + data_var * (<span class="num">1</span> - momentum)

If ``use_global_stats`` is set to be <span class="kw">true</span>, then ``moving_mean`` and
``moving_var`` are used instead of ``data_mean`` and ``data_var`` to compute
the output. It is often used during inference.

The parameter ``axis`` specifies which axis of the input shape denotes
the 'channel' (separately normalized groups).  The default is <span class="num">1.</span>  Specifying -<span class="num">1</span> sets the channel
axis to be the last item in the input shape.

Both ``gamma`` and ``beta`` are learnable parameters. But <span class="kw">if</span> ``fix_gamma`` is <span class="kw">true</span>,
then set ``gamma`` to <span class="num">1</span> and its gradient to <span class="num">0.</span>

.. Note::
  When ``fix_gamma`` is set to True, no sparse support is provided. If ``fix_gamma is`` set to False,
  the sparse tensors will fallback.



Defined in src/operator/nn/batch_norm.cc:L608</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#BatchNorm_v1" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="BatchNorm_v1(po:org.apache.mxnet.javaapi.BatchNorm_v1Param):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="BatchNorm_v1(BatchNorm_v1Param):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">BatchNorm_v1</span><span class="params">(<span name="po">po: <a href="BatchNorm_v1Param.html" class="extype" name="org.apache.mxnet.javaapi.BatchNorm_v1Param">BatchNorm_v1Param</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@BatchNorm_v1(po:org.apache.mxnet.javaapi.BatchNorm_v1Param):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Batch normalization.

This operator is DEPRECATED. Perform BatchNorm on the input.

Normalizes a data batch by mean and variance, and applies a scale ``gamma`` as
well as offset ``beta``.

Assume the input has more than one dimension and we normalize along axis <span class="num">1.</span>
We first compute the mean and variance along <span class="kw">this</span> axis:

.. math::

  data\_mean[i] = mean(data[:,i,:,...]) \\
  data\_var[i] = <span class="kw">var</span>(data[:,i,:,...])

Then compute the normalized output, which has the same shape as input, as following:

.. math::

  out[:,i,:,...] = \frac{data[:,i,:,...] - data\_mean[i]}{\sqrt{data\_var[i]+\epsilon}} * gamma[i] + beta[i]

Both *mean* and *<span class="kw">var</span>* returns a scalar by treating the input as a vector.

Assume the input has size *k* on axis <span class="num">1</span>, then both ``gamma`` and ``beta``
have shape *(k,)*. If ``output_mean_var`` is set to be <span class="kw">true</span>, then outputs both ``data_mean`` and
``data_var`` as well, which are needed <span class="kw">for</span> the backward pass.

Besides the inputs and the outputs, <span class="kw">this</span> operator accepts two auxiliary
states, ``moving_mean`` and ``moving_var``, which are *k*-length
vectors. They are global statistics <span class="kw">for</span> the whole dataset, which are updated
by::

  moving_mean = moving_mean * momentum + data_mean * (<span class="num">1</span> - momentum)
  moving_var = moving_var * momentum + data_var * (<span class="num">1</span> - momentum)

If ``use_global_stats`` is set to be <span class="kw">true</span>, then ``moving_mean`` and
``moving_var`` are used instead of ``data_mean`` and ``data_var`` to compute
the output. It is often used during inference.

Both ``gamma`` and ``beta`` are learnable parameters. But <span class="kw">if</span> ``fix_gamma`` is <span class="kw">true</span>,
then set ``gamma`` to <span class="num">1</span> and its gradient to <span class="num">0.</span>

There's no sparse support <span class="kw">for</span> <span class="kw">this</span> operator, and it will exhibit problematic behavior <span class="kw">if</span> used <span class="kw">with</span>
sparse tensors.



Defined in src/operator/batch_norm_v1.cc:L94</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#BilinearSampler" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="BilinearSampler(data:org.apache.mxnet.javaapi.NDArray,grid:org.apache.mxnet.javaapi.NDArray,cudnn_off:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="BilinearSampler(NDArray,NDArray,Boolean,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">BilinearSampler</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="grid">grid: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="cudnn_off">cudnn_off: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@BilinearSampler(data:org.apache.mxnet.javaapi.NDArray,grid:org.apache.mxnet.javaapi.NDArray,cudnn_off:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies bilinear sampling to input feature map.

Bilinear Sampling is the key of  [NIPS2015] \<span class="lit">"Spatial Transformer Networks\". The usage of the operator is very similar to remap function in OpenCV,
except that the operator has the backward pass.

Given :math:`data` and :math:`grid`, then the output is computed by

.. math::
  x_{src} = grid[batch, 0, y_{dst}, x_{dst}] \\
  y_{src} = grid[batch, 1, y_{dst}, x_{dst}] \\
  output[batch, channel, y_{dst}, x_{dst}] = G(data[batch, channel, y_{src}, x_{src})

:math:`x_{dst}`, :math:`y_{dst}` enumerate all spatial locations in :math:`output`, and :math:`G()` denotes the bilinear interpolation kernel.
The out-boundary points will be padded with zeros.The shape of the output will be (data.shape[0], data.shape[1], grid.shape[2], grid.shape[3]).

The operator assumes that :math:`data` has 'NCHW' layout and :math:`grid` has been normalized to [-1, 1].

BilinearSampler often cooperates with GridGenerator which generates sampling grids for BilinearSampler.
GridGenerator supports two kinds of transformation: ``affine`` and ``warp``.
If users want to design a CustomOp to manipulate :math:`grid`, please firstly refer to the code of GridGenerator.

Example 1::

  ## Zoom out data two times
  data = array(`[ [`[ [1, 4, 3, 6],
                  [1, 8, 8, 9],
                  [0, 4, 1, 5],
                  [1, 0, 1, 3] ] ] ])

  affine_matrix = array(`[ [2, 0, 0],
                         [0, 2, 0] ])

  affine_matrix = reshape(affine_matrix, shape=(1, 6))

  grid = GridGenerator(data=affine_matrix, transform_type='affine', target_shape=(4, 4))

  out = BilinearSampler(data, grid)

  out
  `[ [`[ [ 0,   0,     0,   0],
     [ 0,   3.5,   6.5, 0],
     [ 0,   1.25,  2.5, 0],
     [ 0,   0,     0,   0] ] ]


Example 2::

  ## shift data horizontally by -1 pixel

  data = array(`[ [`[ [1, 4, 3, 6],
                  [1, 8, 8, 9],
                  [0, 4, 1, 5],
                  [1, 0, 1, 3] ] ] ])

  warp_maxtrix = array(`[ [`[ [1, 1, 1, 1],
                          [1, 1, 1, 1],
                          [1, 1, 1, 1],
                          [1, 1, 1, 1] ],
                         `[ [0, 0, 0, 0],
                          [0, 0, 0, 0],
                          [0, 0, 0, 0],
                          [0, 0, 0, 0] ] ] ])

  grid = GridGenerator(data=warp_matrix, transform_type='warp')
  out = BilinearSampler(data, grid)

  out
  `[ [`[ [ 4,  3,  6,  0],
     [ 8,  8,  9,  0],
     [ 4,  1,  5,  0],
     [ 0,  1,  3,  0] ] ]


Defined in src/operator/bilinear_sampler.cc:L255</span></pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data to the BilinearsamplerOp.</p></dd><dt class="param">grid</dt><dd class="cmt"><p>Input grid to the BilinearsamplerOp.grid has two channels: x_src, y_src</p></dd><dt class="param">cudnn_off</dt><dd class="cmt"><p>whether to turn cudnn off</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#BlockGrad" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="BlockGrad(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="BlockGrad(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">BlockGrad</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@BlockGrad(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Stops gradient computation.

Stops the accumulated gradient of the inputs from flowing through <span class="kw">this</span> operator
in the backward direction. In other words, <span class="kw">this</span> operator prevents the contribution
of its inputs to be taken into account <span class="kw">for</span> computing gradients.

Example::

  v1 = [<span class="num">1</span>, <span class="num">2</span>]
  v2 = [<span class="num">0</span>, <span class="num">1</span>]
  a = Variable(<span class="lit">'a'</span>)
  b = Variable(<span class="lit">'b'</span>)
  b_stop_grad = stop_gradient(<span class="num">3</span> * b)
  loss = MakeLoss(b_stop_grad + a)

  executor = loss.simple_bind(ctx=cpu(), a=(<span class="num">1</span>,<span class="num">2</span>), b=(<span class="num">1</span>,<span class="num">2</span>))
  executor.forward(is_train=True, a=v1, b=v2)
  executor.outputs
  [ <span class="num">1.</span>  <span class="num">5.</span>]

  executor.backward()
  executor.grad_arrays
  [ <span class="num">0.</span>  <span class="num">0.</span>]
  [ <span class="num">1.</span>  <span class="num">1.</span>]



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L325</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#CTCLoss" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="CTCLoss(po:org.apache.mxnet.javaapi.CTCLossParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="CTCLoss(CTCLossParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">CTCLoss</span><span class="params">(<span name="po">po: <a href="CTCLossParam.html" class="extype" name="org.apache.mxnet.javaapi.CTCLossParam">CTCLossParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@CTCLoss(po:org.apache.mxnet.javaapi.CTCLossParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Connectionist Temporal Classification Loss.

.. note:: The existing alias ``contrib_CTCLoss`` is deprecated.

The shapes of the inputs and outputs:

- **data**: `(sequence_length, batch_size, alphabet_size)`
- **label**: `(batch_size, label_sequence_length)`
- **out**: `(batch_size)`

The `data` tensor consists of sequences of activation vectors (without applying softmax),
<span class="kw">with</span> i-th channel in the last dimension corresponding to i-th label
<span class="kw">for</span> i between <span class="num">0</span> and alphabet_size-<span class="num">1</span> (i.e always <span class="num">0</span>-indexed).
Alphabet size should include one additional value reserved <span class="kw">for</span> blank label.
When `blank_label` is ``<span class="lit">"first"</span>``, the ``<span class="num">0</span>``-th channel is be reserved <span class="kw">for</span>
activation of blank label, or otherwise <span class="kw">if</span> it is <span class="lit">"last"</span>, ``(alphabet_size-<span class="num">1</span>)``-th channel should be
reserved <span class="kw">for</span> blank label.

``label`` is an index matrix of integers. When `blank_label` is ``<span class="lit">"first"</span>``,
the value <span class="num">0</span> is then reserved <span class="kw">for</span> blank label, and should not be passed in <span class="kw">this</span> matrix. Otherwise,
when `blank_label` is ``<span class="lit">"last"</span>``, the value `(alphabet_size-<span class="num">1</span>)` is reserved <span class="kw">for</span> blank label.

If a sequence of labels is shorter than *label_sequence_length*, use the special
padding value at the end of the sequence to conform it to the correct
length. The padding value is `<span class="num">0</span>` when `blank_label` is ``<span class="lit">"first"</span>``, and `-<span class="num">1</span>` otherwise.

For example, suppose the vocabulary is `[a, b, c]`, and in one batch we have three sequences
<span class="lit">'ba'</span>, <span class="lit">'cbb'</span>, and <span class="lit">'abac'</span>. When `blank_label` is ``<span class="lit">"first"</span>``, we can index the labels as
`{<span class="lit">'a'</span>: <span class="num">1</span>, <span class="lit">'b'</span>: <span class="num">2</span>, <span class="lit">'c'</span>: <span class="num">3</span>}`, and we reserve the <span class="num">0</span>-th channel <span class="kw">for</span> blank label in data tensor.
The resulting `label` tensor should be padded to be::

  `[ [<span class="num">2</span>, <span class="num">1</span>, <span class="num">0</span>, <span class="num">0</span>], [<span class="num">3</span>, <span class="num">2</span>, <span class="num">2</span>, <span class="num">0</span>], [<span class="num">1</span>, <span class="num">2</span>, <span class="num">1</span>, <span class="num">3</span>] ]

When `blank_label` is ``<span class="lit">"last"</span>``, we can index the labels as
`{<span class="lit">'a'</span>: <span class="num">0</span>, <span class="lit">'b'</span>: <span class="num">1</span>, <span class="lit">'c'</span>: <span class="num">2</span>}`, and we reserve the channel index <span class="num">3</span> <span class="kw">for</span> blank label in data tensor.
The resulting `label` tensor should be padded to be::

  `[ [<span class="num">1</span>, <span class="num">0</span>, -<span class="num">1</span>, -<span class="num">1</span>], [<span class="num">2</span>, <span class="num">1</span>, <span class="num">1</span>, -<span class="num">1</span>], [<span class="num">0</span>, <span class="num">1</span>, <span class="num">0</span>, <span class="num">2</span>] ]

``out`` is a list of CTC loss values, one per example in the batch.

See *Connectionist Temporal Classification: Labelling Unsegmented
Sequence Data <span class="kw">with</span> Recurrent Neural Networks*, A. Graves *et al*. <span class="kw">for</span> more
information on the definition and the algorithm.



Defined in src/operator/nn/ctc_loss.cc:L100</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#Convolution" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="Convolution(po:org.apache.mxnet.javaapi.ConvolutionParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="Convolution(ConvolutionParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">Convolution</span><span class="params">(<span name="po">po: <a href="ConvolutionParam.html" class="extype" name="org.apache.mxnet.javaapi.ConvolutionParam">ConvolutionParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@Convolution(po:org.apache.mxnet.javaapi.ConvolutionParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Compute *N*-D convolution on *(N+<span class="num">2</span>)*-D input.

In the <span class="num">2</span>-D convolution, given input data <span class="kw">with</span> shape *(batch_size,
channel, height, width)*, the output is computed by

.. math::

   out[n,i,:,:] = bias[i] + \sum_{j=<span class="num">0</span>}^{channel} data[n,j,:,:] \star
   weight[i,j,:,:]

where :math:`\star` is the <span class="num">2</span>-D cross-correlation operator.

For general <span class="num">2</span>-D convolution, the shapes are

- **data**: *(batch_size, channel, height, width)*
- **weight**: *(num_filter, channel, kernel[<span class="num">0</span>], kernel[<span class="num">1</span>])*
- **bias**: *(num_filter,)*
- **out**: *(batch_size, num_filter, out_height, out_width)*.

Define::

  f(x,k,p,s,d) = floor((x+<span class="num">2</span>*p-d*(k-<span class="num">1</span>)-<span class="num">1</span>)/s)+<span class="num">1</span>

then we have::

  out_height=f(height, kernel[<span class="num">0</span>], pad[<span class="num">0</span>], stride[<span class="num">0</span>], dilate[<span class="num">0</span>])
  out_width=f(width, kernel[<span class="num">1</span>], pad[<span class="num">1</span>], stride[<span class="num">1</span>], dilate[<span class="num">1</span>])

If ``no_bias`` is set to be <span class="kw">true</span>, then the ``bias`` term is ignored.

The default data ``layout`` is *NCHW*, namely *(batch_size, channel, height,
width)*. We can choose other layouts such as *NWC*.

If ``num_group`` is larger than <span class="num">1</span>, denoted by *g*, then split the input ``data``
evenly into *g* parts along the channel axis, and also evenly split ``weight``
along the first dimension. Next compute the convolution on the *i*-th part of
the data <span class="kw">with</span> the *i*-th weight part. The output is obtained by concatenating all
the *g* results.

<span class="num">1</span>-D convolution does not have *height* dimension but only *width* in space.

- **data**: *(batch_size, channel, width)*
- **weight**: *(num_filter, channel, kernel[<span class="num">0</span>])*
- **bias**: *(num_filter,)*
- **out**: *(batch_size, num_filter, out_width)*.

<span class="num">3</span>-D convolution adds an additional *depth* dimension besides *height* and
*width*. The shapes are

- **data**: *(batch_size, channel, depth, height, width)*
- **weight**: *(num_filter, channel, kernel[<span class="num">0</span>], kernel[<span class="num">1</span>], kernel[<span class="num">2</span>])*
- **bias**: *(num_filter,)*
- **out**: *(batch_size, num_filter, out_depth, out_height, out_width)*.

Both ``weight`` and ``bias`` are learnable parameters.

There are other options to tune the performance.

- **cudnn_tune**: enable <span class="kw">this</span> option leads to higher startup time but may give
  faster speed. Options are

  - **off**: no tuning
  - **limited_workspace**:run test and pick the fastest algorithm that doesn't
    exceed workspace limit.
  - **fastest**: pick the fastest algorithm and ignore workspace limit.
  - **<span class="std">None</span>** (default): the behavior is determined by environment variable
    ``MXNET_CUDNN_AUTOTUNE_DEFAULT``. <span class="num">0</span> <span class="kw">for</span> off, <span class="num">1</span> <span class="kw">for</span> limited workspace
    (default), <span class="num">2</span> <span class="kw">for</span> fastest.

- **workspace**: A large number leads to more (GPU) memory usage but may improve
  the performance.



Defined in src/operator/nn/convolution.cc:L475</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#Convolution_v1" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="Convolution_v1(po:org.apache.mxnet.javaapi.Convolution_v1Param):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="Convolution_v1(Convolution_v1Param):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">Convolution_v1</span><span class="params">(<span name="po">po: <a href="Convolution_v1Param.html" class="extype" name="org.apache.mxnet.javaapi.Convolution_v1Param">Convolution_v1Param</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@Convolution_v1(po:org.apache.mxnet.javaapi.Convolution_v1Param):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>This operator is DEPRECATED. Apply convolution to input then add a bias.</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#Correlation" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="Correlation(po:org.apache.mxnet.javaapi.CorrelationParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="Correlation(CorrelationParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">Correlation</span><span class="params">(<span name="po">po: <a href="CorrelationParam.html" class="extype" name="org.apache.mxnet.javaapi.CorrelationParam">CorrelationParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@Correlation(po:org.apache.mxnet.javaapi.CorrelationParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies correlation to inputs.

The correlation layer performs multiplicative patch comparisons between two feature maps.

Given two multi-channel feature maps :math:`f_{<span class="num">1</span>}, f_{<span class="num">2</span>}`, <span class="kw">with</span> :math:`w`, :math:`h`, and :math:`c` being their width, height, and number of channels,
the correlation layer lets the network compare each patch from :math:`f_{<span class="num">1</span>}` <span class="kw">with</span> each patch from :math:`f_{<span class="num">2</span>}`.

For now we consider only a single comparison of two patches. The 'correlation' of two patches centered at :math:`x_{<span class="num">1</span>}` in the first map and
:math:`x_{<span class="num">2</span>}` in the second map is then defined as:

.. math::

   c(x_{<span class="num">1</span>}, x_{<span class="num">2</span>}) = \sum_{o \in [-k,k] \times [-k,k]} &lt;f_{<span class="num">1</span>}(x_{<span class="num">1</span>} + o), f_{<span class="num">2</span>}(x_{<span class="num">2</span>} + o)&gt;

<span class="kw">for</span> a square patch of size :math:`K:=<span class="num">2</span>k+<span class="num">1</span>`.

Note that the equation above is identical to one step of a convolution in neural networks, but instead of convolving data <span class="kw">with</span> a filter, it convolves data <span class="kw">with</span> other
data. For <span class="kw">this</span> reason, it has no training weights.

Computing :math:`c(x_{<span class="num">1</span>}, x_{<span class="num">2</span>})` involves :math:`c * K^{<span class="num">2</span>}` multiplications. Comparing all patch combinations involves :math:`w^{<span class="num">2</span>}*h^{<span class="num">2</span>}` such computations.

Given a maximum displacement :math:`d`, <span class="kw">for</span> each location :math:`x_{<span class="num">1</span>}` it computes correlations :math:`c(x_{<span class="num">1</span>}, x_{<span class="num">2</span>})` only in a neighborhood of size :math:`D:=<span class="num">2</span>d+<span class="num">1</span>`,
by limiting the range of :math:`x_{<span class="num">2</span>}`. We use strides :math:`s_{<span class="num">1</span>}, s_{<span class="num">2</span>}`, to quantize :math:`x_{<span class="num">1</span>}` globally and to quantize :math:`x_{<span class="num">2</span>}` within the neighborhood
centered around :math:`x_{<span class="num">1</span>}`.

The <span class="kw">final</span> output is defined by the following expression:

.. math::
  out[n, q, i, j] = c(x_{i, j}, x_{q})

where :math:`i` and :math:`j` enumerate spatial locations in :math:`f_{<span class="num">1</span>}`, and :math:`q` denotes the :math:`q^{th}` neighborhood of :math:`x_{i,j}`.


Defined in src/operator/correlation.cc:L197</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#Deconvolution" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="Deconvolution(po:org.apache.mxnet.javaapi.DeconvolutionParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="Deconvolution(DeconvolutionParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">Deconvolution</span><span class="params">(<span name="po">po: <a href="DeconvolutionParam.html" class="extype" name="org.apache.mxnet.javaapi.DeconvolutionParam">DeconvolutionParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@Deconvolution(po:org.apache.mxnet.javaapi.DeconvolutionParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes <span class="num">1</span>D or <span class="num">2</span>D transposed convolution (aka fractionally strided convolution) of the input tensor. This operation can be seen as the gradient of Convolution operation <span class="kw">with</span> respect to its input. Convolution usually reduces the size of the input. Transposed convolution works the other way, going from a smaller input to a larger output <span class="kw">while</span> preserving the connectivity pattern.</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#Dropout" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="Dropout(po:org.apache.mxnet.javaapi.DropoutParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="Dropout(DropoutParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">Dropout</span><span class="params">(<span name="po">po: <a href="DropoutParam.html" class="extype" name="org.apache.mxnet.javaapi.DropoutParam">DropoutParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@Dropout(po:org.apache.mxnet.javaapi.DropoutParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies dropout operation to input array.

- During training, each element of the input is set to zero <span class="kw">with</span> probability p.
  The whole array is rescaled by :math:`<span class="num">1</span>/(<span class="num">1</span>-p)` to keep the expected
  sum of the input unchanged.

- During testing, <span class="kw">this</span> operator does not change the input <span class="kw">if</span> mode is 'training'.
  If mode is <span class="lit">'always'</span>, the same computaion as during training will be applied.

Example::

  random.seed(<span class="num">998</span>)
  input_array = array(`[ [<span class="num">3.</span>, <span class="num">0.5</span>,  -<span class="num">0.5</span>,  <span class="num">2.</span>, <span class="num">7.</span>],
                      [<span class="num">2.</span>, -<span class="num">0.4</span>,   <span class="num">7.</span>,  <span class="num">3.</span>, <span class="num">0.2</span>] ])
  a = symbol.Variable(<span class="lit">'a'</span>)
  dropout = symbol.Dropout(a, p = <span class="num">0.2</span>)
  executor = dropout.simple_bind(a = input_array.shape)

  ## If training
  executor.forward(is_train = True, a = input_array)
  executor.outputs
  `[ [ <span class="num">3.75</span>   <span class="num">0.625</span> -<span class="num">0.</span>     <span class="num">2.5</span>    <span class="num">8.75</span> ]
   [ <span class="num">2.5</span>   -<span class="num">0.5</span>    <span class="num">8.75</span>   <span class="num">3.75</span>   <span class="num">0.</span>   ] ]

  ## If testing
  executor.forward(is_train = False, a = input_array)
  executor.outputs
  `[ [ <span class="num">3.</span>     <span class="num">0.5</span>   -<span class="num">0.5</span>    <span class="num">2.</span>     <span class="num">7.</span>   ]
   [ <span class="num">2.</span>    -<span class="num">0.4</span>    <span class="num">7.</span>     <span class="num">3.</span>     <span class="num">0.2</span>  ] ]


Defined in src/operator/nn/dropout.cc:L95</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#ElementWiseSum" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="ElementWiseSum(args:Array[org.apache.mxnet.javaapi.NDArray],out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="ElementWiseSum(Array[NDArray],NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">ElementWiseSum</span><span class="params">(<span name="args">args: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@ElementWiseSum(args:Array[org.apache.mxnet.javaapi.NDArray],out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Adds all input arguments element-wise.

.. math::
   add\_n(a_1, a_2, ..., a_n) = a_1 + a_2 + ... + a_n

``add_n`` is potentially more efficient than calling ``add`` by `n` times.

The storage <span class="kw">type</span> of ``add_n`` output depends on storage types of inputs

- add_n(row_sparse, row_sparse, ..) = row_sparse
- add_n(default, csr, default) = default
- add_n(any input combinations longer than <span class="num">4</span> (&gt;<span class="num">4</span>) <span class="kw">with</span> at least one default <span class="kw">type</span>) = default
- otherwise, ``add_n`` falls all inputs back to default storage and generates default storage



Defined in src/operator/tensor/elemwise_sum.cc:L155</pre></div><dl class="paramcmts block"><dt class="param">args</dt><dd class="cmt"><p>Positional input arguments</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#Embedding" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="Embedding(po:org.apache.mxnet.javaapi.EmbeddingParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="Embedding(EmbeddingParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">Embedding</span><span class="params">(<span name="po">po: <a href="EmbeddingParam.html" class="extype" name="org.apache.mxnet.javaapi.EmbeddingParam">EmbeddingParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@Embedding(po:org.apache.mxnet.javaapi.EmbeddingParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>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 [<span class="num">0</span>, 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 <span class="lit">"sparse_grad"</span> is False, <span class="kw">if</span> any index mentioned is too large, it is replaced by the index that
addresses the last vector in an embedding matrix.
When <span class="lit">"sparse_grad"</span> is True, an error will be raised <span class="kw">if</span> invalid indices are found.

Examples::

  input_dim = <span class="num">4</span>
  output_dim = <span class="num">5</span>

  <span class="cmt">// Each row in weight matrix y represents a word. So, y = (w0,w1,w2,w3)</span>
  y = `[ [  <span class="num">0.</span>,   <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>,   <span class="num">4.</span>],
       [  <span class="num">5.</span>,   <span class="num">6.</span>,   <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
       [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>,  <span class="num">13.</span>,  <span class="num">14.</span>],
       [ <span class="num">15.</span>,  <span class="num">16.</span>,  <span class="num">17.</span>,  <span class="num">18.</span>,  <span class="num">19.</span>] ]

  <span class="cmt">// Input array x represents n-grams(2-gram). So, x = [(w1,w3), (w0,w2)]</span>
  x = `[ [ <span class="num">1.</span>,  <span class="num">3.</span>],
       [ <span class="num">0.</span>,  <span class="num">2.</span>] ]

  <span class="cmt">// Mapped input x to its vector representation y.</span>
  Embedding(x, y, <span class="num">4</span>, <span class="num">5</span>) = `[ `[ [  <span class="num">5.</span>,   <span class="num">6.</span>,   <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
                            [ <span class="num">15.</span>,  <span class="num">16.</span>,  <span class="num">17.</span>,  <span class="num">18.</span>,  <span class="num">19.</span>] ],

                           `[ [  <span class="num">0.</span>,   <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>,   <span class="num">4.</span>],
                            [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>,  <span class="num">13.</span>,  <span class="num">14.</span>] ] ]


The storage <span class="kw">type</span> of weight can be either row_sparse or default.

.. Note::

    If <span class="lit">"sparse_grad"</span> is set to True, the storage <span class="kw">type</span> of gradient w.r.t weights will be
    <span class="lit">"row_sparse"</span>. Only a subset of optimizers support sparse gradients, including SGD, AdaGrad
    and Adam. Note that by default <span class="kw">lazy</span> updates is turned on, which may perform differently
    from standard updates. For more details, please check the Optimization API at:
    https:<span class="cmt">//mxnet.incubator.apache.org/api/python/optimization/optimization.html</span>



Defined in src/operator/tensor/indexing_op.cc:L597</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#FullyConnected" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="FullyConnected(po:org.apache.mxnet.javaapi.FullyConnectedParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="FullyConnected(FullyConnectedParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">FullyConnected</span><span class="params">(<span name="po">po: <a href="FullyConnectedParam.html" class="extype" name="org.apache.mxnet.javaapi.FullyConnectedParam">FullyConnectedParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@FullyConnected(po:org.apache.mxnet.javaapi.FullyConnectedParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies a linear transformation: :math:`Y = XW^T + b`.

If ``flatten`` is set to be <span class="kw">true</span>, then the shapes are:

- **data**: `(batch_size, x1, x2, ..., xn)`
- **weight**: `(num_hidden, x1 * x2 * ... * xn)`
- **bias**: `(num_hidden,)`
- **out**: `(batch_size, num_hidden)`

If ``flatten`` is set to be <span class="kw">false</span>, then the shapes are:

- **data**: `(x1, x2, ..., xn, input_dim)`
- **weight**: `(num_hidden, input_dim)`
- **bias**: `(num_hidden,)`
- **out**: `(x1, x2, ..., xn, num_hidden)`

The learnable parameters include both ``weight`` and ``bias``.

If ``no_bias`` is set to be <span class="kw">true</span>, then the ``bias`` term is ignored.

.. Note::

    The sparse support <span class="kw">for</span> FullyConnected is limited to forward evaluation <span class="kw">with</span> `row_sparse`
    weight and bias, where the length of `weight.indices` and `bias.indices` must be equal
    to `num_hidden`. This could be useful <span class="kw">for</span> model inference <span class="kw">with</span> `row_sparse` weights
    trained <span class="kw">with</span> importance sampling or noise contrastive estimation.

    To compute linear transformation <span class="kw">with</span> <span class="lit">'csr'</span> sparse data, sparse.dot is recommended instead
    of sparse.FullyConnected.



Defined in src/operator/nn/fully_connected.cc:L286</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#GridGenerator" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="GridGenerator(data:org.apache.mxnet.javaapi.NDArray,transform_type:String,target_shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="GridGenerator(NDArray,String,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">GridGenerator</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="transform_type">transform_type: <span class="extype" name="scala.Predef.String">String</span></span>, <span name="target_shape">target_shape: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@GridGenerator(data:org.apache.mxnet.javaapi.NDArray,transform_type:String,target_shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Generates <span class="num">2</span>D sampling grid <span class="kw">for</span> bilinear sampling.</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data to the function.</p></dd><dt class="param">transform_type</dt><dd class="cmt"><p>The type of transformation. For <code>affine</code>, input data should be an affine matrix of size (batch, 6). For <code>warp</code>, input data should be an optical flow of size (batch, 2, h, w).</p></dd><dt class="param">target_shape</dt><dd class="cmt"><p>Specifies the output shape (H, W). This is required if transformation type is <code>affine</code>. If transformation type is <code>warp</code>, this parameter is ignored.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#GroupNorm" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="GroupNorm(po:org.apache.mxnet.javaapi.GroupNormParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="GroupNorm(GroupNormParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">GroupNorm</span><span class="params">(<span name="po">po: <a href="GroupNormParam.html" class="extype" name="org.apache.mxnet.javaapi.GroupNormParam">GroupNormParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@GroupNorm(po:org.apache.mxnet.javaapi.GroupNormParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Group normalization.

The input channels are separated into ``num_groups`` groups, each containing ``num_channels / num_groups`` channels.
The mean and standard-deviation are calculated separately over the each group.

.. math::

  data = data.reshape((N, num_groups, C <span class="cmt">// num_groups, ...))</span>
  out = \frac{data - mean(data, axis)}{\sqrt{<span class="kw">var</span>(data, axis) + \epsilon}} * gamma + beta

Both ``gamma`` and ``beta`` are learnable parameters.



Defined in src/operator/nn/group_norm.cc:L76</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#IdentityAttachKLSparseReg" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="IdentityAttachKLSparseReg(po:org.apache.mxnet.javaapi.IdentityAttachKLSparseRegParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="IdentityAttachKLSparseReg(IdentityAttachKLSparseRegParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">IdentityAttachKLSparseReg</span><span class="params">(<span name="po">po: <a href="IdentityAttachKLSparseRegParam.html" class="extype" name="org.apache.mxnet.javaapi.IdentityAttachKLSparseRegParam">IdentityAttachKLSparseRegParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@IdentityAttachKLSparseReg(po:org.apache.mxnet.javaapi.IdentityAttachKLSparseRegParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Apply a sparse regularization to the output a sigmoid activation function.</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#InstanceNorm" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="InstanceNorm(data:org.apache.mxnet.javaapi.NDArray,gamma:org.apache.mxnet.javaapi.NDArray,beta:org.apache.mxnet.javaapi.NDArray,eps:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="InstanceNorm(NDArray,NDArray,NDArray,Float,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">InstanceNorm</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="gamma">gamma: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="beta">beta: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="eps">eps: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@InstanceNorm(data:org.apache.mxnet.javaapi.NDArray,gamma:org.apache.mxnet.javaapi.NDArray,beta:org.apache.mxnet.javaapi.NDArray,eps:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies instance normalization to the n-dimensional input array.

This operator takes an n-dimensional input array where (n&gt;<span class="num">2</span>) and normalizes
the input using the following formula:

.. math::

  out = \frac{x - mean[data]}{ \sqrt{Var[data]} + \epsilon} * gamma + beta

This layer is similar to batch normalization layer (`BatchNorm`)
<span class="kw">with</span> two differences: first, the normalization is
carried out per example (instance), not over a batch. Second, the
same normalization is applied both at test and train time. This
operation is also known as `contrast normalization`.

If the input data is of shape [batch, channel, spacial_dim1, spacial_dim2, ...],
`gamma` and `beta` parameters must be vectors of shape [channel].

This implementation is based on <span class="kw">this</span> paper [<span class="num">1</span>]_

.. [<span class="num">1</span>] Instance Normalization: The Missing Ingredient <span class="kw">for</span> Fast Stylization,
   D. Ulyanov, A. Vedaldi, V. Lempitsky, <span class="num">2016</span> (arXiv:<span class="num">1607.08022</span>v2).

Examples::

  <span class="cmt">// Input of shape (2,1,2)</span>
  x = `[ `[ [ <span class="num">1.1</span>,  <span class="num">2.2</span>] ],
       `[ [ <span class="num">3.3</span>,  <span class="num">4.4</span>] ] ]

  <span class="cmt">// gamma parameter of length 1</span>
  gamma = [<span class="num">1.5</span>]

  <span class="cmt">// beta parameter of length 1</span>
  beta = [<span class="num">0.5</span>]

  <span class="cmt">// Instance normalization is calculated with the above formula</span>
  InstanceNorm(x,gamma,beta) = `[ `[ [-<span class="num">0.997527</span>  ,  <span class="num">1.99752665</span>] ],
                                `[ [-<span class="num">0.99752653</span>,  <span class="num">1.99752724</span>] ] ]



Defined in src/operator/instance_norm.cc:L94</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>An n-dimensional input array (n &gt; 2) of the form [batch, channel, spatial_dim1, spatial_dim2, ...].</p></dd><dt class="param">gamma</dt><dd class="cmt"><p>A vector of length 'channel', which multiplies the normalized input.</p></dd><dt class="param">beta</dt><dd class="cmt"><p>A vector of length 'channel', which is added to the product of the normalized input and the weight.</p></dd><dt class="param">eps</dt><dd class="cmt"><p>An <code>epsilon</code> parameter to prevent division by 0.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#L2Normalization" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="L2Normalization(po:org.apache.mxnet.javaapi.L2NormalizationParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="L2Normalization(L2NormalizationParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">L2Normalization</span><span class="params">(<span name="po">po: <a href="L2NormalizationParam.html" class="extype" name="org.apache.mxnet.javaapi.L2NormalizationParam">L2NormalizationParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@L2Normalization(po:org.apache.mxnet.javaapi.L2NormalizationParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Normalize the input array using the L2 norm.

For <span class="num">1</span>-D NDArray, it computes::

  out = data / sqrt(sum(data ** <span class="num">2</span>) + eps)

For N-D NDArray, <span class="kw">if</span> the input array has shape (N, N, ..., N),

<span class="kw">with</span> ``mode`` = ``instance``, it normalizes each instance in the multidimensional
array by its L2 norm.::

  <span class="kw">for</span> i in <span class="num">0.</span>..N
    out[i,:,:,...,:] = data[i,:,:,...,:] / sqrt(sum(data[i,:,:,...,:] ** <span class="num">2</span>) + eps)

<span class="kw">with</span> ``mode`` = ``channel``, it normalizes each channel in the array by its L2 norm.::

  <span class="kw">for</span> i in <span class="num">0.</span>..N
    out[:,i,:,...,:] = data[:,i,:,...,:] / sqrt(sum(data[:,i,:,...,:] ** <span class="num">2</span>) + eps)

<span class="kw">with</span> ``mode`` = ``spatial``, it normalizes the cross channel norm <span class="kw">for</span> each position
in the array by its L2 norm.::

  <span class="kw">for</span> dim in <span class="num">2.</span>..N
    <span class="kw">for</span> i in <span class="num">0.</span>..N
      out[.....,i,...] = take(out, indices=i, axis=dim) / sqrt(sum(take(out, indices=i, axis=dim) ** <span class="num">2</span>) + eps)
          -dim-

Example::

  x = `[ `[ [<span class="num">1</span>,<span class="num">2</span>],
        [<span class="num">3</span>,<span class="num">4</span>] ],
       `[ [<span class="num">2</span>,<span class="num">2</span>],
        [<span class="num">5</span>,<span class="num">6</span>] ] ]

  L2Normalization(x, mode='instance')
  =`[ `[ [ <span class="num">0.18257418</span>  <span class="num">0.36514837</span>]
     [ <span class="num">0.54772252</span>  <span class="num">0.73029673</span>] ]
    `[ [ <span class="num">0.24077171</span>  <span class="num">0.24077171</span>]
     [ <span class="num">0.60192931</span>  <span class="num">0.72231513</span>] ] ]

  L2Normalization(x, mode='channel')
  =`[ `[ [ <span class="num">0.31622776</span>  <span class="num">0.44721359</span>]
     [ <span class="num">0.94868326</span>  <span class="num">0.89442718</span>] ]
    `[ [ <span class="num">0.37139067</span>  <span class="num">0.31622776</span>]
     [ <span class="num">0.92847669</span>  <span class="num">0.94868326</span>] ] ]

  L2Normalization(x, mode='spatial')
  =`[ `[ [ <span class="num">0.44721359</span>  <span class="num">0.89442718</span>]
     [ <span class="num">0.60000002</span>  <span class="num">0.80000001</span>] ]
    `[ [ <span class="num">0.70710677</span>  <span class="num">0.70710677</span>]
     [ <span class="num">0.6401844</span>   <span class="num">0.76822126</span>] ] ]



Defined in src/operator/l2_normalization.cc:L195</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#LRN" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="LRN(po:org.apache.mxnet.javaapi.LRNParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="LRN(LRNParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">LRN</span><span class="params">(<span name="po">po: <a href="LRNParam.html" class="extype" name="org.apache.mxnet.javaapi.LRNParam">LRNParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@LRN(po:org.apache.mxnet.javaapi.LRNParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies local response normalization to the input.

The local response normalization layer performs <span class="lit">"lateral inhibition"</span> by normalizing
over local input regions.

If :math:`a_{x,y}^{i}` is the activity of a neuron computed by applying kernel :math:`i` at position
:math:`(x, y)` and then applying the ReLU nonlinearity, the response-normalized
activity :math:`b_{x,y}^{i}` is given by the expression:

.. math::
   b_{x,y}^{i} = \frac{a_{x,y}^{i}}{\Bigg({k + \frac{\alpha}{n} \sum_{j=max(<span class="num">0</span>, i-\frac{n}{<span class="num">2</span>})}^{min(N-<span class="num">1</span>, i+\frac{n}{<span class="num">2</span>})} (a_{x,y}^{j})^{<span class="num">2</span>}}\Bigg)^{\beta}}

where the sum runs over :math:`n` <span class="lit">"adjacent"</span> kernel maps at the same spatial position, and :math:`N` is the total
number of kernels in the layer.



Defined in src/operator/nn/lrn.cc:L157</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#LayerNorm" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="LayerNorm(po:org.apache.mxnet.javaapi.LayerNormParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="LayerNorm(LayerNormParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">LayerNorm</span><span class="params">(<span name="po">po: <a href="LayerNormParam.html" class="extype" name="org.apache.mxnet.javaapi.LayerNormParam">LayerNormParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@LayerNorm(po:org.apache.mxnet.javaapi.LayerNormParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Layer normalization.

Normalizes the channels of the input tensor by mean and variance, and applies a scale ``gamma`` as
well as offset ``beta``.

Assume the input has more than one dimension and we normalize along axis <span class="num">1.</span>
We first compute the mean and variance along <span class="kw">this</span> axis and then
compute the normalized output, which has the same shape as input, as following:

.. math::

  out = \frac{data - mean(data, axis)}{\sqrt{<span class="kw">var</span>(data, axis) + \epsilon}} * gamma + beta

Both ``gamma`` and ``beta`` are learnable parameters.

Unlike BatchNorm and InstanceNorm,  the *mean* and *<span class="kw">var</span>* are computed along the channel dimension.

Assume the input has size *k* on axis <span class="num">1</span>, then both ``gamma`` and ``beta``
have shape *(k,)*. If ``output_mean_var`` is set to be <span class="kw">true</span>, then outputs both ``data_mean`` and
``data_std``. Note that no gradient will be passed through these two outputs.

The parameter ``axis`` specifies which axis of the input shape denotes
the 'channel' (separately normalized groups).  The default is -<span class="num">1</span>, which sets the channel
axis to be the last item in the input shape.



Defined in src/operator/nn/layer_norm.cc:L201</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#LeakyReLU" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="LeakyReLU(po:org.apache.mxnet.javaapi.LeakyReLUParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="LeakyReLU(LeakyReLUParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">LeakyReLU</span><span class="params">(<span name="po">po: <a href="LeakyReLUParam.html" class="extype" name="org.apache.mxnet.javaapi.LeakyReLUParam">LeakyReLUParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@LeakyReLU(po:org.apache.mxnet.javaapi.LeakyReLUParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies Leaky rectified linear unit activation element-wise to the input.

Leaky ReLUs attempt to fix the <span class="lit">"dying ReLU"</span> problem by allowing a small `slope`
when the input is negative and has a slope of one when input is positive.

The following modified ReLU Activation functions are supported:

- *elu*: Exponential Linear <span class="std">Unit</span>. `y = x &gt; <span class="num">0</span> ? x : slope * (exp(x)-<span class="num">1</span>)`
- *selu*: Scaled Exponential Linear <span class="std">Unit</span>. `y = lambda * (x &gt; <span class="num">0</span> ? x : alpha * (exp(x) - <span class="num">1</span>))` where
  *lambda = <span class="num">1.0507009873554804934193349852946</span>* and *alpha = <span class="num">1.6732632423543772848170429916717</span>*.
- *leaky*: Leaky ReLU. `y = x &gt; <span class="num">0</span> ? x : slope * x`
- *prelu*: Parametric ReLU. This is same as *leaky* except that `slope` is learnt during training.
- *rrelu*: Randomized ReLU. same as *leaky* but the `slope` is uniformly and randomly chosen from
  *[lower_bound, upper_bound)* <span class="kw">for</span> training, <span class="kw">while</span> fixed to be
  *(lower_bound+upper_bound)/<span class="num">2</span>* <span class="kw">for</span> inference.



Defined in src/operator/leaky_relu.cc:L162</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#LinearRegressionOutput" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="LinearRegressionOutput(data:org.apache.mxnet.javaapi.NDArray,label:org.apache.mxnet.javaapi.NDArray,grad_scale:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="LinearRegressionOutput(NDArray,NDArray,Float,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">LinearRegressionOutput</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="label">label: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="grad_scale">grad_scale: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@LinearRegressionOutput(data:org.apache.mxnet.javaapi.NDArray,label:org.apache.mxnet.javaapi.NDArray,grad_scale:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes and optimizes <span class="kw">for</span> squared loss during backward propagation.
Just outputs ``data`` during forward propagation.

If :math:`\hat{y}_i` is the predicted value of the i-th sample, and :math:`y_i` is the corresponding target value,
then the squared loss estimated over :math:`n` samples is defined as

:math:`\text{SquaredLoss}(\textbf{Y}, \hat{\textbf{Y}} ) = \frac{<span class="num">1</span>}{n} \sum_{i=<span class="num">0</span>}^{n-<span class="num">1</span>} \lVert  \textbf{y}_i - \hat{\textbf{y}}_i  \rVert_2`

.. note::
   Use the LinearRegressionOutput as the <span class="kw">final</span> output layer of a net.

The storage <span class="kw">type</span> of ``label`` can be ``default`` or ``csr``

- LinearRegressionOutput(default, default) = default
- LinearRegressionOutput(default, csr) = default

By default, gradients of <span class="kw">this</span> loss function are scaled by factor `<span class="num">1</span>/m`, where m is the number of regression outputs of a training example.
The parameter `grad_scale` can be used to change <span class="kw">this</span> scale to `grad_scale/m`.



Defined in src/operator/regression_output.cc:L92</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data to the function.</p></dd><dt class="param">label</dt><dd class="cmt"><p>Input label to the function.</p></dd><dt class="param">grad_scale</dt><dd class="cmt"><p>Scale the gradient by a float factor</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#LogisticRegressionOutput" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="LogisticRegressionOutput(data:org.apache.mxnet.javaapi.NDArray,label:org.apache.mxnet.javaapi.NDArray,grad_scale:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="LogisticRegressionOutput(NDArray,NDArray,Float,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">LogisticRegressionOutput</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="label">label: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="grad_scale">grad_scale: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@LogisticRegressionOutput(data:org.apache.mxnet.javaapi.NDArray,label:org.apache.mxnet.javaapi.NDArray,grad_scale:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies a logistic function to the input.

The logistic function, also known as the sigmoid function, is computed as
:math:`\frac{<span class="num">1</span>}{<span class="num">1</span>+exp(-\textbf{x})}`.

Commonly, the sigmoid is used to squash the real-valued output of a linear model
:math:`wTx+b` into the [<span class="num">0</span>,<span class="num">1</span>] range so that it can be interpreted as a probability.
It is suitable <span class="kw">for</span> binary classification or probability prediction tasks.

.. note::
   Use the LogisticRegressionOutput as the <span class="kw">final</span> output layer of a net.

The storage <span class="kw">type</span> of ``label`` can be ``default`` or ``csr``

- LogisticRegressionOutput(default, default) = default
- LogisticRegressionOutput(default, csr) = default

The loss function used is the Binary Cross Entropy Loss:

:math:`-{(y\log(p) + (<span class="num">1</span> - y)\log(<span class="num">1</span> - p))}`

Where `y` is the ground truth probability of positive outcome <span class="kw">for</span> a given example, and `p` the probability predicted by the model. By default, gradients of <span class="kw">this</span> loss function are scaled by factor `<span class="num">1</span>/m`, where m is the number of regression outputs of a training example.
The parameter `grad_scale` can be used to change <span class="kw">this</span> scale to `grad_scale/m`.



Defined in src/operator/regression_output.cc:L152</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data to the function.</p></dd><dt class="param">label</dt><dd class="cmt"><p>Input label to the function.</p></dd><dt class="param">grad_scale</dt><dd class="cmt"><p>Scale the gradient by a float factor</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#MAERegressionOutput" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="MAERegressionOutput(data:org.apache.mxnet.javaapi.NDArray,label:org.apache.mxnet.javaapi.NDArray,grad_scale:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="MAERegressionOutput(NDArray,NDArray,Float,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">MAERegressionOutput</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="label">label: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="grad_scale">grad_scale: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@MAERegressionOutput(data:org.apache.mxnet.javaapi.NDArray,label:org.apache.mxnet.javaapi.NDArray,grad_scale:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes mean absolute error of the input.

MAE is a risk metric corresponding to the expected value of the absolute error.

If :math:`\hat{y}_i` is the predicted value of the i-th sample, and :math:`y_i` is the corresponding target value,
then the mean absolute error (MAE) estimated over :math:`n` samples is defined as

:math:`\text{MAE}(\textbf{Y}, \hat{\textbf{Y}} ) = \frac{<span class="num">1</span>}{n} \sum_{i=<span class="num">0</span>}^{n-<span class="num">1</span>} \lVert \textbf{y}_i - \hat{\textbf{y}}_i \rVert_1`

.. note::
   Use the MAERegressionOutput as the <span class="kw">final</span> output layer of a net.

The storage <span class="kw">type</span> of ``label`` can be ``default`` or ``csr``

- MAERegressionOutput(default, default) = default
- MAERegressionOutput(default, csr) = default

By default, gradients of <span class="kw">this</span> loss function are scaled by factor `<span class="num">1</span>/m`, where m is the number of regression outputs of a training example.
The parameter `grad_scale` can be used to change <span class="kw">this</span> scale to `grad_scale/m`.



Defined in src/operator/regression_output.cc:L120</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data to the function.</p></dd><dt class="param">label</dt><dd class="cmt"><p>Input label to the function.</p></dd><dt class="param">grad_scale</dt><dd class="cmt"><p>Scale the gradient by a float factor</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#MakeLoss" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="MakeLoss(po:org.apache.mxnet.javaapi.MakeLossParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="MakeLoss(MakeLossParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">MakeLoss</span><span class="params">(<span name="po">po: <a href="MakeLossParam.html" class="extype" name="org.apache.mxnet.javaapi.MakeLossParam">MakeLossParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@MakeLoss(po:org.apache.mxnet.javaapi.MakeLossParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Make your own loss function in network construction.

This operator accepts a customized loss function symbol as a terminal loss and
the symbol should be an operator <span class="kw">with</span> no backward dependency.
The output of <span class="kw">this</span> function is the gradient of loss <span class="kw">with</span> respect to the input data.

For example, <span class="kw">if</span> you are a making a cross entropy loss function. Assume ``out`` is the
predicted output and ``label`` is the <span class="kw">true</span> label, then the cross entropy can be defined as::

  cross_entropy = label * log(out) + (<span class="num">1</span> - label) * log(<span class="num">1</span> - out)
  loss = MakeLoss(cross_entropy)

We will need to use ``MakeLoss`` when we are creating our own loss function or we want to
combine multiple loss functions. Also we may want to stop some variables' gradients
from backpropagation. See more detail in ``BlockGrad`` or ``stop_gradient``.

In addition, we can give a scale to the loss by setting ``grad_scale``,
so that the gradient of the loss will be rescaled in the backpropagation.

.. note:: This operator should be used as a <span class="std">Symbol</span> instead of NDArray.



Defined in src/operator/make_loss.cc:L70</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#Pooling" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="Pooling(po:org.apache.mxnet.javaapi.PoolingParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="Pooling(PoolingParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">Pooling</span><span class="params">(<span name="po">po: <a href="PoolingParam.html" class="extype" name="org.apache.mxnet.javaapi.PoolingParam">PoolingParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@Pooling(po:org.apache.mxnet.javaapi.PoolingParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Performs pooling on the input.

The shapes <span class="kw">for</span> <span class="num">1</span>-D pooling are

- **data** and **out**: *(batch_size, channel, width)* (NCW layout) or
  *(batch_size, width, channel)* (NWC layout),

The shapes <span class="kw">for</span> <span class="num">2</span>-D pooling are

- **data** and **out**: *(batch_size, channel, height, width)* (NCHW layout) or
  *(batch_size, height, width, channel)* (NHWC layout),

    out_height = f(height, kernel[<span class="num">0</span>], pad[<span class="num">0</span>], stride[<span class="num">0</span>])
    out_width = f(width, kernel[<span class="num">1</span>], pad[<span class="num">1</span>], stride[<span class="num">1</span>])

The definition of *f* depends on ``pooling_convention``, which has two options:

- **valid** (default)::

    f(x, k, p, s) = floor((x+<span class="num">2</span>*p-k)/s)+<span class="num">1</span>

- **full**, which is compatible <span class="kw">with</span> Caffe::

    f(x, k, p, s) = ceil((x+<span class="num">2</span>*p-k)/s)+<span class="num">1</span>

When ``global_pool`` is set to be <span class="kw">true</span>, then global pooling is performed. It will reset
``kernel=(height, width)`` and set the appropiate padding to <span class="num">0.</span>

Three pooling options are supported by ``pool_type``:

- **avg**: average pooling
- **max**: max pooling
- **sum**: sum pooling
- **lp**: Lp pooling

For <span class="num">3</span>-D pooling, an additional *depth* dimension is added before
*height*. Namely the input data and output will have shape *(batch_size, channel, depth,
height, width)* (NCDHW layout) or *(batch_size, depth, height, width, channel)* (NDHWC layout).

Notes on Lp pooling:

Lp pooling was first introduced by <span class="kw">this</span> paper: https:<span class="cmt">//arxiv.org/pdf/1204.3968.pdf.</span>
L-<span class="num">1</span> pooling is simply sum pooling, <span class="kw">while</span> L-inf pooling is simply max pooling.
We can see that Lp pooling stands between those two, in practice the most common value <span class="kw">for</span> p is <span class="num">2.</span>

For each window ``X``, the mathematical expression <span class="kw">for</span> Lp pooling is:

:math:`f(X) = \sqrt[p]{\sum_{x}^{X} x^p}`



Defined in src/operator/nn/pooling.cc:L416</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#Pooling_v1" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="Pooling_v1(po:org.apache.mxnet.javaapi.Pooling_v1Param):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="Pooling_v1(Pooling_v1Param):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">Pooling_v1</span><span class="params">(<span name="po">po: <a href="Pooling_v1Param.html" class="extype" name="org.apache.mxnet.javaapi.Pooling_v1Param">Pooling_v1Param</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@Pooling_v1(po:org.apache.mxnet.javaapi.Pooling_v1Param):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>This operator is DEPRECATED.
Perform pooling on the input.

The shapes <span class="kw">for</span> <span class="num">2</span>-D pooling is

- **data**: *(batch_size, channel, height, width)*
- **out**: *(batch_size, num_filter, out_height, out_width)*, <span class="kw">with</span>::

    out_height = f(height, kernel[<span class="num">0</span>], pad[<span class="num">0</span>], stride[<span class="num">0</span>])
    out_width = f(width, kernel[<span class="num">1</span>], pad[<span class="num">1</span>], stride[<span class="num">1</span>])

The definition of *f* depends on ``pooling_convention``, which has two options:

- **valid** (default)::

    f(x, k, p, s) = floor((x+<span class="num">2</span>*p-k)/s)+<span class="num">1</span>

- **full**, which is compatible <span class="kw">with</span> Caffe::

    f(x, k, p, s) = ceil((x+<span class="num">2</span>*p-k)/s)+<span class="num">1</span>

But ``global_pool`` is set to be <span class="kw">true</span>, then <span class="kw">do</span> a global pooling, namely reset
``kernel=(height, width)``.

Three pooling options are supported by ``pool_type``:

- **avg**: average pooling
- **max**: max pooling
- **sum**: sum pooling

<span class="num">1</span>-D pooling is special <span class="kw">case</span> of <span class="num">2</span>-D pooling <span class="kw">with</span> *weight=<span class="num">1</span>* and
*kernel[<span class="num">1</span>]=<span class="num">1</span>*.

For <span class="num">3</span>-D pooling, an additional *depth* dimension is added before
*height*. Namely the input data will have shape *(batch_size, channel, depth,
height, width)*.



Defined in src/operator/pooling_v1.cc:L103</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#RNN" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="RNN(po:org.apache.mxnet.javaapi.RNNParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="RNN(RNNParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">RNN</span><span class="params">(<span name="po">po: <a href="RNNParam.html" class="extype" name="org.apache.mxnet.javaapi.RNNParam">RNNParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@RNN(po:org.apache.mxnet.javaapi.RNNParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies recurrent layers to input data. Currently, vanilla RNN, LSTM and GRU are
implemented, <span class="kw">with</span> both multi-layer and bidirectional support.

When the input data is of <span class="kw">type</span> float32 and the environment variables MXNET_CUDA_ALLOW_TENSOR_CORE
and MXNET_CUDA_TENSOR_OP_MATH_ALLOW_CONVERSION are set to <span class="num">1</span>, <span class="kw">this</span> operator will <span class="kw">try</span> to use
pseudo-float16 precision (float32 math <span class="kw">with</span> float16 I/O) precision in order to use
Tensor Cores on suitable NVIDIA GPUs. This can sometimes give significant speedups.

**Vanilla RNN**

Applies a single-gate recurrent layer to input X. Two kinds of activation function are supported:
ReLU and Tanh.

With ReLU activation function:

.. math::
    h_t = relu(W_{ih} * x_t + b_{ih}  +  W_{hh} * h_{(t-<span class="num">1</span>)} + b_{hh})

With Tanh activtion function:

.. math::
    h_t = \tanh(W_{ih} * x_t + b_{ih}  +  W_{hh} * h_{(t-<span class="num">1</span>)} + b_{hh})

Reference paper: Finding structure in time - Elman, <span class="num">1988.</span>
https:<span class="cmt">//crl.ucsd.edu/~elman/Papers/fsit.pdf</span>

**LSTM**

<span class="std">Long</span> <span class="std">Short</span>-Term Memory - Hochreiter, <span class="num">1997.</span> http:<span class="cmt">//www.bioinf.jku.at/publications/older/2604.pdf</span>

.. math::
  \begin{array}{ll}
            i_t = \mathrm{sigmoid}(W_{ii} x_t + b_{ii} + W_{hi} h_{(t-<span class="num">1</span>)} + b_{hi}) \\
            f_t = \mathrm{sigmoid}(W_{<span class="kw">if</span>} x_t + b_{<span class="kw">if</span>} + W_{hf} h_{(t-<span class="num">1</span>)} + b_{hf}) \\
            g_t = \tanh(W_{ig} x_t + b_{ig} + W_{hc} h_{(t-<span class="num">1</span>)} + b_{hg}) \\
            o_t = \mathrm{sigmoid}(W_{io} x_t + b_{io} + W_{ho} h_{(t-<span class="num">1</span>)} + b_{ho}) \\
            c_t = f_t * c_{(t-<span class="num">1</span>)} + i_t * g_t \\
            h_t = o_t * \tanh(c_t)
            \end{array}

With the projection size being set, LSTM could use the projection feature to reduce the parameters
size and give some speedups without significant damage to the accuracy.

<span class="std">Long</span> <span class="std">Short</span>-Term Memory Based Recurrent Neural Network Architectures <span class="kw">for</span> Large Vocabulary Speech
Recognition - Sak et al. <span class="num">2014.</span> https:<span class="cmt">//arxiv.org/abs/1402.1128</span>

.. math::
  \begin{array}{ll}
            i_t = \mathrm{sigmoid}(W_{ii} x_t + b_{ii} + W_{ri} r_{(t-<span class="num">1</span>)} + b_{ri}) \\
            f_t = \mathrm{sigmoid}(W_{<span class="kw">if</span>} x_t + b_{<span class="kw">if</span>} + W_{rf} r_{(t-<span class="num">1</span>)} + b_{rf}) \\
            g_t = \tanh(W_{ig} x_t + b_{ig} + W_{rc} r_{(t-<span class="num">1</span>)} + b_{rg}) \\
            o_t = \mathrm{sigmoid}(W_{io} x_t + b_{o} + W_{ro} r_{(t-<span class="num">1</span>)} + b_{ro}) \\
            c_t = f_t * c_{(t-<span class="num">1</span>)} + i_t * g_t \\
            h_t = o_t * \tanh(c_t)
            r_t = W_{hr} h_t
            \end{array}

**GRU**

Gated Recurrent <span class="std">Unit</span> - Cho et al. <span class="num">2014.</span> http:<span class="cmt">//arxiv.org/abs/1406.1078</span>

The definition of GRU here is slightly different from paper but compatible <span class="kw">with</span> CUDNN.

.. math::
  \begin{array}{ll}
            r_t = \mathrm{sigmoid}(W_{ir} x_t + b_{ir} + W_{hr} h_{(t-<span class="num">1</span>)} + b_{hr}) \\
            z_t = \mathrm{sigmoid}(W_{iz} x_t + b_{iz} + W_{hz} h_{(t-<span class="num">1</span>)} + b_{hz}) \\
            n_t = \tanh(W_{in} x_t + b_{in} + r_t * (W_{hn} h_{(t-<span class="num">1</span>)}+ b_{hn})) \\
            h_t = (<span class="num">1</span> - z_t) * n_t + z_t * h_{(t-<span class="num">1</span>)} \\
            \end{array}


Defined in src/operator/rnn.cc:L375</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#ROIPooling" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="ROIPooling(data:org.apache.mxnet.javaapi.NDArray,rois:org.apache.mxnet.javaapi.NDArray,pooled_size:org.apache.mxnet.javaapi.Shape,spatial_scale:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="ROIPooling(NDArray,NDArray,Shape,Float,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">ROIPooling</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rois">rois: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="pooled_size">pooled_size: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="spatial_scale">spatial_scale: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@ROIPooling(data:org.apache.mxnet.javaapi.NDArray,rois:org.apache.mxnet.javaapi.NDArray,pooled_size:org.apache.mxnet.javaapi.Shape,spatial_scale:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Performs region of interest(ROI) pooling on the input array.

ROI pooling is a variant of a max pooling layer, in which the output size is fixed and
region of interest is a parameter. Its purpose is to perform max pooling on the inputs
of non-uniform sizes to obtain fixed-size feature maps. ROI pooling is a neural-net
layer mostly used in training a `Fast R-CNN` network <span class="kw">for</span> <span class="kw">object</span> detection.

This operator takes a <span class="num">4</span>D feature map as an input array and region proposals as `rois`,
then it pools over sub-regions of input and produces a fixed-sized output array
regardless of the ROI size.

To crop the feature map accordingly, you can resize the bounding box coordinates
by changing the parameters `rois` and `spatial_scale`.

The cropped feature maps are pooled by standard max pooling operation to a fixed size output
indicated by a `pooled_size` parameter. batch_size will change to the number of region
bounding boxes after `ROIPooling`.

The size of each region of interest doesn't have to be perfectly divisible by
the number of pooling sections(`pooled_size`).

Example::

  x = `[ [`[ [  <span class="num">0.</span>,   <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>,   <span class="num">4.</span>,   <span class="num">5.</span>],
         [  <span class="num">6.</span>,   <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>,  <span class="num">10.</span>,  <span class="num">11.</span>],
         [ <span class="num">12.</span>,  <span class="num">13.</span>,  <span class="num">14.</span>,  <span class="num">15.</span>,  <span class="num">16.</span>,  <span class="num">17.</span>],
         [ <span class="num">18.</span>,  <span class="num">19.</span>,  <span class="num">20.</span>,  <span class="num">21.</span>,  <span class="num">22.</span>,  <span class="num">23.</span>],
         [ <span class="num">24.</span>,  <span class="num">25.</span>,  <span class="num">26.</span>,  <span class="num">27.</span>,  <span class="num">28.</span>,  <span class="num">29.</span>],
         [ <span class="num">30.</span>,  <span class="num">31.</span>,  <span class="num">32.</span>,  <span class="num">33.</span>,  <span class="num">34.</span>,  <span class="num">35.</span>],
         [ <span class="num">36.</span>,  <span class="num">37.</span>,  <span class="num">38.</span>,  <span class="num">39.</span>,  <span class="num">40.</span>,  <span class="num">41.</span>],
         [ <span class="num">42.</span>,  <span class="num">43.</span>,  <span class="num">44.</span>,  <span class="num">45.</span>,  <span class="num">46.</span>,  <span class="num">47.</span>] ] ] ]

  <span class="cmt">// region of interest i.e. bounding box coordinates.</span>
  y = `[ [<span class="num">0</span>,<span class="num">0</span>,<span class="num">0</span>,<span class="num">4</span>,<span class="num">4</span>] ]

  <span class="cmt">// returns array of shape (2,2) according to the given roi with max pooling.</span>
  ROIPooling(x, y, (<span class="num">2</span>,<span class="num">2</span>), <span class="num">1.0</span>) = `[ [`[ [ <span class="num">14.</span>,  <span class="num">16.</span>],
                                    [ <span class="num">26.</span>,  <span class="num">28.</span>] ] ] ]

  <span class="cmt">// region of interest is changed due to the change in `spacial_scale` parameter.</span>
  ROIPooling(x, y, (<span class="num">2</span>,<span class="num">2</span>), <span class="num">0.7</span>) = `[ [`[ [  <span class="num">7.</span>,   <span class="num">9.</span>],
                                    [ <span class="num">19.</span>,  <span class="num">21.</span>] ] ] ]



Defined in src/operator/roi_pooling.cc:L224</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array to the pooling operator,  a 4D Feature maps</p></dd><dt class="param">rois</dt><dd class="cmt"><p>Bounding box coordinates, a 2D array of <code>[ [batch_index, x1, y1, x2, y2] ], where (x1, y1) and (x2, y2) are top left and bottom right corners of designated region of interest. </code>batch_index<code> indicates the index of corresponding image in the input array</code></p></dd><dt class="param">pooled_size</dt><dd class="cmt"><p>ROI pooling output shape (h,w)</p></dd><dt class="param">spatial_scale</dt><dd class="cmt"><p>Ratio of input feature map height (or w) to raw image height (or w). Equals the reciprocal of total stride in convolutional layers</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#SVMOutput" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="SVMOutput(po:org.apache.mxnet.javaapi.SVMOutputParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="SVMOutput(SVMOutputParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">SVMOutput</span><span class="params">(<span name="po">po: <a href="SVMOutputParam.html" class="extype" name="org.apache.mxnet.javaapi.SVMOutputParam">SVMOutputParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@SVMOutput(po:org.apache.mxnet.javaapi.SVMOutputParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes support vector machine based transformation of the input.

This tutorial demonstrates using SVM as output layer <span class="kw">for</span> classification instead of softmax:
https:<span class="cmt">//github.com/apache/mxnet/tree/v1.x/example/svm_mnist.</span></pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#SequenceLast" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="SequenceLast(po:org.apache.mxnet.javaapi.SequenceLastParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="SequenceLast(SequenceLastParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">SequenceLast</span><span class="params">(<span name="po">po: <a href="SequenceLastParam.html" class="extype" name="org.apache.mxnet.javaapi.SequenceLastParam">SequenceLastParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@SequenceLast(po:org.apache.mxnet.javaapi.SequenceLastParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Takes the last element of a sequence.

This function takes an n-dimensional input array of the form
[max_sequence_length, batch_size, other_feature_dims] and returns a (n-<span class="num">1</span>)-dimensional array
of the form [batch_size, other_feature_dims].

Parameter `sequence_length` is used to handle variable-length sequences. `sequence_length` should be
an input array of positive ints of dimension [batch_size]. To use <span class="kw">this</span> parameter,
set `use_sequence_length` to `True`, otherwise each example in the batch is assumed
to have the max sequence length.

.. note:: Alternatively, you can also use `take` operator.

Example::

   x = `[ `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
         [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>],
         [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>] ],

        `[ [ <span class="num">10.</span>,   <span class="num">11.</span>,   <span class="num">12.</span>],
         [ <span class="num">13.</span>,   <span class="num">14.</span>,   <span class="num">15.</span>],
         [ <span class="num">16.</span>,   <span class="num">17.</span>,   <span class="num">18.</span>] ],

        `[ [  <span class="num">19.</span>,   <span class="num">20.</span>,   <span class="num">21.</span>],
         [  <span class="num">22.</span>,   <span class="num">23.</span>,   <span class="num">24.</span>],
         [  <span class="num">25.</span>,   <span class="num">26.</span>,   <span class="num">27.</span>] ] ]

   <span class="cmt">// returns last sequence when sequence_length parameter is not used</span>
   SequenceLast(x) = `[ [  <span class="num">19.</span>,   <span class="num">20.</span>,   <span class="num">21.</span>],
                      [  <span class="num">22.</span>,   <span class="num">23.</span>,   <span class="num">24.</span>],
                      [  <span class="num">25.</span>,   <span class="num">26.</span>,   <span class="num">27.</span>] ]

   <span class="cmt">// sequence_length is used</span>
   SequenceLast(x, sequence_length=[<span class="num">1</span>,<span class="num">1</span>,<span class="num">1</span>], use_sequence_length=True) =
            `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
             [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>],
             [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>] ]

   <span class="cmt">// sequence_length is used</span>
   SequenceLast(x, sequence_length=[<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>], use_sequence_length=True) =
            `[ [  <span class="num">1.</span>,    <span class="num">2.</span>,   <span class="num">3.</span>],
             [  <span class="num">13.</span>,  <span class="num">14.</span>,  <span class="num">15.</span>],
             [  <span class="num">25.</span>,  <span class="num">26.</span>,  <span class="num">27.</span>] ]



Defined in src/operator/sequence_last.cc:L105</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#SequenceMask" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="SequenceMask(po:org.apache.mxnet.javaapi.SequenceMaskParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="SequenceMask(SequenceMaskParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">SequenceMask</span><span class="params">(<span name="po">po: <a href="SequenceMaskParam.html" class="extype" name="org.apache.mxnet.javaapi.SequenceMaskParam">SequenceMaskParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@SequenceMask(po:org.apache.mxnet.javaapi.SequenceMaskParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Sets all elements outside the sequence to a constant value.

This function takes an n-dimensional input array of the form
[max_sequence_length, batch_size, other_feature_dims] and returns an array of the same shape.

Parameter `sequence_length` is used to handle variable-length sequences. `sequence_length`
should be an input array of positive ints of dimension [batch_size].
To use <span class="kw">this</span> parameter, set `use_sequence_length` to `True`,
otherwise each example in the batch is assumed to have the max sequence length and
<span class="kw">this</span> operator works as the `identity` operator.

Example::

   x = `[ `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
         [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>] ],

        `[ [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
         [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ],

        `[ [ <span class="num">13.</span>,  <span class="num">14.</span>,   <span class="num">15.</span>],
         [ <span class="num">16.</span>,  <span class="num">17.</span>,   <span class="num">18.</span>] ] ]

   <span class="cmt">// Batch 1</span>
   B1 = `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
         [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
         [ <span class="num">13.</span>,  <span class="num">14.</span>,  <span class="num">15.</span>] ]

   <span class="cmt">// Batch 2</span>
   B2 = `[ [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>],
         [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>],
         [ <span class="num">16.</span>,  <span class="num">17.</span>,  <span class="num">18.</span>] ]

   <span class="cmt">// works as identity operator when sequence_length parameter is not used</span>
   SequenceMask(x) = `[ `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
                       [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>] ],

                      `[ [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
                       [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ],

                      `[ [ <span class="num">13.</span>,  <span class="num">14.</span>,   <span class="num">15.</span>],
                       [ <span class="num">16.</span>,  <span class="num">17.</span>,   <span class="num">18.</span>] ] ]

   <span class="cmt">// sequence_length [1,1] means 1 of each batch will be kept</span>
   <span class="cmt">// and other rows are masked with default mask value = 0</span>
   SequenceMask(x, sequence_length=[<span class="num">1</span>,<span class="num">1</span>], use_sequence_length=True) =
                `[ `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
                  [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>] ],

                 `[ [  <span class="num">0.</span>,   <span class="num">0.</span>,   <span class="num">0.</span>],
                  [  <span class="num">0.</span>,   <span class="num">0.</span>,   <span class="num">0.</span>] ],

                 `[ [  <span class="num">0.</span>,   <span class="num">0.</span>,   <span class="num">0.</span>],
                  [  <span class="num">0.</span>,   <span class="num">0.</span>,   <span class="num">0.</span>] ] ]

   <span class="cmt">// sequence_length [2,3] means 2 of batch B1 and 3 of batch B2 will be kept</span>
   <span class="cmt">// and other rows are masked with value = 1</span>
   SequenceMask(x, sequence_length=[<span class="num">2</span>,<span class="num">3</span>], use_sequence_length=True, value=<span class="num">1</span>) =
                `[ `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
                  [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>] ],

                 `[ [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
                  [  <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ],

                 `[ [   <span class="num">1.</span>,   <span class="num">1.</span>,   <span class="num">1.</span>],
                  [  <span class="num">16.</span>,  <span class="num">17.</span>,  <span class="num">18.</span>] ] ]



Defined in src/operator/sequence_mask.cc:L185</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#SequenceReverse" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="SequenceReverse(po:org.apache.mxnet.javaapi.SequenceReverseParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="SequenceReverse(SequenceReverseParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">SequenceReverse</span><span class="params">(<span name="po">po: <a href="SequenceReverseParam.html" class="extype" name="org.apache.mxnet.javaapi.SequenceReverseParam">SequenceReverseParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@SequenceReverse(po:org.apache.mxnet.javaapi.SequenceReverseParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Reverses the elements of each sequence.

This function takes an n-dimensional input array of the form [max_sequence_length, batch_size, other_feature_dims]
and returns an array of the same shape.

Parameter `sequence_length` is used to handle variable-length sequences.
`sequence_length` should be an input array of positive ints of dimension [batch_size].
To use <span class="kw">this</span> parameter, set `use_sequence_length` to `True`,
otherwise each example in the batch is assumed to have the max sequence length.

Example::

   x = `[ `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
         [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>] ],

        `[ [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
         [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ],

        `[ [ <span class="num">13.</span>,  <span class="num">14.</span>,   <span class="num">15.</span>],
         [ <span class="num">16.</span>,  <span class="num">17.</span>,   <span class="num">18.</span>] ] ]

   <span class="cmt">// Batch 1</span>
   B1 = `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
         [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
         [ <span class="num">13.</span>,  <span class="num">14.</span>,  <span class="num">15.</span>] ]

   <span class="cmt">// Batch 2</span>
   B2 = `[ [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>],
         [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>],
         [ <span class="num">16.</span>,  <span class="num">17.</span>,  <span class="num">18.</span>] ]

   <span class="cmt">// returns reverse sequence when sequence_length parameter is not used</span>
   SequenceReverse(x) = `[ `[ [ <span class="num">13.</span>,  <span class="num">14.</span>,   <span class="num">15.</span>],
                          [ <span class="num">16.</span>,  <span class="num">17.</span>,   <span class="num">18.</span>] ],

                         `[ [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
                          [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ],

                         `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
                          [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>] ] ]

   <span class="cmt">// sequence_length [2,2] means 2 rows of</span>
   <span class="cmt">// both batch B1 and B2 will be reversed.</span>
   SequenceReverse(x, sequence_length=[<span class="num">2</span>,<span class="num">2</span>], use_sequence_length=True) =
                     `[ `[ [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
                       [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ],

                      `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
                       [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>] ],

                      `[ [ <span class="num">13.</span>,  <span class="num">14.</span>,   <span class="num">15.</span>],
                       [ <span class="num">16.</span>,  <span class="num">17.</span>,   <span class="num">18.</span>] ] ]

   <span class="cmt">// sequence_length [2,3] means 2 of batch B2 and 3 of batch B3</span>
   <span class="cmt">// will be reversed.</span>
   SequenceReverse(x, sequence_length=[<span class="num">2</span>,<span class="num">3</span>], use_sequence_length=True) =
                    `[ `[ [  <span class="num">7.</span>,   <span class="num">8.</span>,   <span class="num">9.</span>],
                      [ <span class="num">16.</span>,  <span class="num">17.</span>,  <span class="num">18.</span>] ],

                     `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>],
                      [ <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ],

                     `[ [ <span class="num">13.</span>,  <span class="num">14</span>,   <span class="num">15.</span>],
                      [  <span class="num">4.</span>,   <span class="num">5.</span>,   <span class="num">6.</span>] ] ]



Defined in src/operator/sequence_reverse.cc:L121</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#SliceChannel" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="SliceChannel(po:org.apache.mxnet.javaapi.SliceChannelParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="SliceChannel(SliceChannelParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">SliceChannel</span><span class="params">(<span name="po">po: <a href="SliceChannelParam.html" class="extype" name="org.apache.mxnet.javaapi.SliceChannelParam">SliceChannelParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@SliceChannel(po:org.apache.mxnet.javaapi.SliceChannelParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Splits an array along a particular axis into multiple sub-arrays.

.. note:: ``SliceChannel`` is deprecated. Use ``split`` instead.

**Note** that `num_outputs` should evenly divide the length of the axis
along which to split the array.

Example::

   x  = `[ `[ [ <span class="num">1.</span>]
          [ <span class="num">2.</span>] ]
         `[ [ <span class="num">3.</span>]
          [ <span class="num">4.</span>] ]
         `[ [ <span class="num">5.</span>]
          [ <span class="num">6.</span>] ] ]
   x.shape = (<span class="num">3</span>, <span class="num">2</span>, <span class="num">1</span>)

   y = split(x, axis=<span class="num">1</span>, num_outputs=<span class="num">2</span>) <span class="cmt">// a list of 2 arrays with shape (3, 1, 1)</span>
   y = `[ `[ [ <span class="num">1.</span>] ]
        `[ [ <span class="num">3.</span>] ]
        `[ [ <span class="num">5.</span>] ] ]

       `[ `[ [ <span class="num">2.</span>] ]
        `[ [ <span class="num">4.</span>] ]
        `[ [ <span class="num">6.</span>] ] ]

   y[<span class="num">0</span>].shape = (<span class="num">3</span>, <span class="num">1</span>, <span class="num">1</span>)

   z = split(x, axis=<span class="num">0</span>, num_outputs=<span class="num">3</span>) <span class="cmt">// a list of 3 arrays with shape (1, 2, 1)</span>
   z = `[ `[ [ <span class="num">1.</span>]
         [ <span class="num">2.</span>] ] ]

       `[ `[ [ <span class="num">3.</span>]
         [ <span class="num">4.</span>] ] ]

       `[ `[ [ <span class="num">5.</span>]
         [ <span class="num">6.</span>] ] ]

   z[<span class="num">0</span>].shape = (<span class="num">1</span>, <span class="num">2</span>, <span class="num">1</span>)

`squeeze_axis=<span class="num">1</span>` removes the axis <span class="kw">with</span> length <span class="num">1</span> from the shapes of the output arrays.
**Note** that setting `squeeze_axis` to ``<span class="num">1</span>`` removes axis <span class="kw">with</span> length <span class="num">1</span> only
along the `axis` which it is split.
Also `squeeze_axis` can be set to <span class="kw">true</span> only <span class="kw">if</span> ``input.shape[axis] == num_outputs``.

Example::

   z = split(x, axis=<span class="num">0</span>, num_outputs=<span class="num">3</span>, squeeze_axis=<span class="num">1</span>) <span class="cmt">// a list of 3 arrays with shape (2, 1)</span>
   z = `[ [ <span class="num">1.</span>]
        [ <span class="num">2.</span>] ]

       `[ [ <span class="num">3.</span>]
        [ <span class="num">4.</span>] ]

       `[ [ <span class="num">5.</span>]
        [ <span class="num">6.</span>] ]
   z[<span class="num">0</span>].shape = (<span class="num">2</span> ,<span class="num">1</span> )



Defined in src/operator/slice_channel.cc:L106</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#SoftmaxActivation" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="SoftmaxActivation(data:org.apache.mxnet.javaapi.NDArray,mode:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="SoftmaxActivation(NDArray,String,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">SoftmaxActivation</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="mode">mode: <span class="extype" name="scala.Predef.String">String</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@SoftmaxActivation(data:org.apache.mxnet.javaapi.NDArray,mode:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies softmax activation to input. This is intended <span class="kw">for</span> internal layers.

.. note::

  This operator has been deprecated, please use `softmax`.

If `mode` = ``instance``, <span class="kw">this</span> operator will compute a softmax <span class="kw">for</span> each instance in the batch.
This is the default mode.

If `mode` = ``channel``, <span class="kw">this</span> operator will compute a k-<span class="kw">class</span> softmax at each position
of each instance, where `k` = ``num_channel``. This mode can only be used when the input array
has at least <span class="num">3</span> dimensions.
This can be used <span class="kw">for</span> `fully convolutional network`, `image segmentation`, etc.

Example::

  &gt;&gt;&gt; input_array = mx.nd.array(`[ [<span class="num">3.</span>, <span class="num">0.5</span>, -<span class="num">0.5</span>, <span class="num">2.</span>, <span class="num">7.</span>],
  &gt;&gt;&gt;                            [<span class="num">2.</span>, -<span class="num">.4</span>, <span class="num">7.</span>,   <span class="num">3.</span>, <span class="num">0.2</span>] ])
  &gt;&gt;&gt; softmax_act = mx.nd.SoftmaxActivation(input_array)
  &gt;&gt;&gt; print softmax_act.asnumpy()
  `[ [  <span class="num">1.78322066e-02</span>   <span class="num">1.46375655e-03</span>   <span class="num">5.38485940e-04</span>   <span class="num">6.56010211e-03</span>   <span class="num">9.73605454e-01</span>]
   [  <span class="num">6.56221947e-03</span>   <span class="num">5.95310994e-04</span>   <span class="num">9.73919690e-01</span>   <span class="num">1.78379621e-02</span>   <span class="num">1.08472735e-03</span>] ]



Defined in src/operator/nn/softmax_activation.cc:L58</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt class="param">mode</dt><dd class="cmt"><p>Specifies how to compute the softmax. If set to <code><code>instance</code></code>, it computes softmax for each instance. If set to <code><code>channel</code></code>, It computes cross channel softmax for each position of each instance.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#SoftmaxOutput" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="SoftmaxOutput(po:org.apache.mxnet.javaapi.SoftmaxOutputParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="SoftmaxOutput(SoftmaxOutputParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">SoftmaxOutput</span><span class="params">(<span name="po">po: <a href="SoftmaxOutputParam.html" class="extype" name="org.apache.mxnet.javaapi.SoftmaxOutputParam">SoftmaxOutputParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@SoftmaxOutput(po:org.apache.mxnet.javaapi.SoftmaxOutputParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the gradient of cross entropy loss <span class="kw">with</span> respect to softmax output.

- This operator computes the gradient in two steps.
  The cross entropy loss does not actually need to be computed.

  - Applies softmax function on the input array.
  - Computes and returns the gradient of cross entropy loss w.r.t. the softmax output.

- The softmax function, cross entropy loss and gradient is given by:

  - Softmax <span class="std">Function</span>:

    .. math:: \text{softmax}(x)_i = \frac{exp(x_i)}{\sum_j exp(x_j)}

  - Cross Entropy <span class="std">Function</span>:

    .. math:: \text{CE(label, output)} = - \sum_i \text{label}_i \log(\text{output}_i)

  - The gradient of cross entropy loss w.r.t softmax output:

    .. math:: \text{gradient} = \text{output} - \text{label}

- During forward propagation, the softmax function is computed <span class="kw">for</span> each instance in the input array.

  For general *N*-D input arrays <span class="kw">with</span> shape :math:`(d_1, d_2, ..., d_n)`. The size is
  :math:`s=d_1 \cdot d_2 \cdot \cdot \cdot d_n`. We can use the parameters `preserve_shape`
  and `multi_output` to specify the way to compute softmax:

  - By default, `preserve_shape` is ``<span class="kw">false</span>``. This operator will reshape the input array
    into a <span class="num">2</span>-D array <span class="kw">with</span> shape :math:`(d_1, \frac{s}{d_1})` and then compute the softmax function <span class="kw">for</span>
    each row in the reshaped array, and afterwards reshape it back to the original shape
    :math:`(d_1, d_2, ..., d_n)`.
  - If `preserve_shape` is ``<span class="kw">true</span>``, the softmax function will be computed along
    the last axis (`axis` = ``-<span class="num">1</span>``).
  - If `multi_output` is ``<span class="kw">true</span>``, the softmax function will be computed along
    the second axis (`axis` = ``<span class="num">1</span>``).

- During backward propagation, the gradient of cross-entropy loss w.r.t softmax output array is computed.
  The provided label can be a one-hot label array or a probability label array.

  - If the parameter `use_ignore` is ``<span class="kw">true</span>``, `ignore_label` can specify input instances
    <span class="kw">with</span> a particular label to be ignored during backward propagation. **This has no effect when
    softmax `output` has same shape as `label`**.

    Example::

      data = `[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>],[<span class="num">2</span>,<span class="num">2</span>,<span class="num">2</span>,<span class="num">2</span>],[<span class="num">3</span>,<span class="num">3</span>,<span class="num">3</span>,<span class="num">3</span>],[<span class="num">4</span>,<span class="num">4</span>,<span class="num">4</span>,<span class="num">4</span>] ]
      label = [<span class="num">1</span>,<span class="num">0</span>,<span class="num">2</span>,<span class="num">3</span>]
      ignore_label = <span class="num">1</span>
      SoftmaxOutput(data=data, label = label,\
                    multi_output=<span class="kw">true</span>, use_ignore=<span class="kw">true</span>,\
                    ignore_label=ignore_label)
      ## forward softmax output
      `[ [ <span class="num">0.0320586</span>   <span class="num">0.08714432</span>  <span class="num">0.23688284</span>  <span class="num">0.64391428</span>]
       [ <span class="num">0.25</span>        <span class="num">0.25</span>        <span class="num">0.25</span>        <span class="num">0.25</span>      ]
       [ <span class="num">0.25</span>        <span class="num">0.25</span>        <span class="num">0.25</span>        <span class="num">0.25</span>      ]
       [ <span class="num">0.25</span>        <span class="num">0.25</span>        <span class="num">0.25</span>        <span class="num">0.25</span>      ] ]
      ## backward gradient output
      `[ [ <span class="num">0.</span>    <span class="num">0.</span>    <span class="num">0.</span>    <span class="num">0.</span>  ]
       [-<span class="num">0.75</span>  <span class="num">0.25</span>  <span class="num">0.25</span>  <span class="num">0.25</span>]
       [ <span class="num">0.25</span>  <span class="num">0.25</span> -<span class="num">0.75</span>  <span class="num">0.25</span>]
       [ <span class="num">0.25</span>  <span class="num">0.25</span>  <span class="num">0.25</span> -<span class="num">0.75</span>] ]
      ## notice that the first row is all <span class="num">0</span> because label[<span class="num">0</span>] is <span class="num">1</span>, which is equal to ignore_label.

  - The parameter `grad_scale` can be used to rescale the gradient, which is often used to
    give each loss function different weights.

  - This operator also supports various ways to normalize the gradient by `normalization`,
    The `normalization` is applied <span class="kw">if</span> softmax output has different shape than the labels.
    The `normalization` mode can be set to the followings:

    - ``<span class="lit">'null'</span>``: <span class="kw">do</span> nothing.
    - ``<span class="lit">'batch'</span>``: divide the gradient by the batch size.
    - ``<span class="lit">'valid'</span>``: divide the gradient by the number of instances which are not ignored.



Defined in src/operator/softmax_output.cc:L242</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#SpatialTransformer" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="SpatialTransformer(po:org.apache.mxnet.javaapi.SpatialTransformerParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="SpatialTransformer(SpatialTransformerParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">SpatialTransformer</span><span class="params">(<span name="po">po: <a href="SpatialTransformerParam.html" class="extype" name="org.apache.mxnet.javaapi.SpatialTransformerParam">SpatialTransformerParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@SpatialTransformer(po:org.apache.mxnet.javaapi.SpatialTransformerParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies a spatial transformer to input feature map.</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#SwapAxis" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="SwapAxis(po:org.apache.mxnet.javaapi.SwapAxisParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="SwapAxis(SwapAxisParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">SwapAxis</span><span class="params">(<span name="po">po: <a href="SwapAxisParam.html" class="extype" name="org.apache.mxnet.javaapi.SwapAxisParam">SwapAxisParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@SwapAxis(po:org.apache.mxnet.javaapi.SwapAxisParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Interchanges two axes of an array.

Examples::

  x = `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>] ])
  swapaxes(x, <span class="num">0</span>, <span class="num">1</span>) = `[ [ <span class="num">1</span>],
                       [ <span class="num">2</span>],
                       [ <span class="num">3</span>] ]

  x = `[ `[ [ <span class="num">0</span>, <span class="num">1</span>],
        [ <span class="num">2</span>, <span class="num">3</span>] ],
       `[ [ <span class="num">4</span>, <span class="num">5</span>],
        [ <span class="num">6</span>, <span class="num">7</span>] ] ]  <span class="cmt">// (2,2,2) array</span>

 swapaxes(x, <span class="num">0</span>, <span class="num">2</span>) = `[ `[ [ <span class="num">0</span>, <span class="num">4</span>],
                       [ <span class="num">2</span>, <span class="num">6</span>] ],
                      `[ [ <span class="num">1</span>, <span class="num">5</span>],
                       [ <span class="num">3</span>, <span class="num">7</span>] ] ]


Defined in src/operator/swapaxis.cc:L69</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#UpSampling" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="UpSampling(po:org.apache.mxnet.javaapi.UpSamplingParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="UpSampling(UpSamplingParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">UpSampling</span><span class="params">(<span name="po">po: <a href="UpSamplingParam.html" class="extype" name="org.apache.mxnet.javaapi.UpSamplingParam">UpSamplingParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@UpSampling(po:org.apache.mxnet.javaapi.UpSamplingParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Upsamples the given input data.

Two algorithms (``sample_type``) are available <span class="kw">for</span> upsampling:

- Nearest Neighbor
- Bilinear

**Nearest Neighbor Upsampling**

Input data is expected to be NCHW.

Example::

  x = `[ [`[ [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
         [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
         [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>] ] ] ]

  UpSampling(x, scale=<span class="num">2</span>, sample_type='nearest') = `[ [`[ [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
                                                     [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
                                                     [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
                                                     [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
                                                     [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
                                                     [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>] ] ] ]

**Bilinear Upsampling**

Uses `deconvolution` algorithm under the hood. You need provide both input data and the kernel.

Input data is expected to be NCHW.

`num_filter` is expected to be same as the number of channels.

Example::

  x = `[ [`[ [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
         [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
         [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>] ] ] ]

  w = `[ [`[ [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
         [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
         [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>]
         [<span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span> <span class="num">1.</span>] ] ] ]

  UpSampling(x, w, scale=<span class="num">2</span>, sample_type='bilinear', num_filter=<span class="num">1</span>) = `[ [`[ [<span class="num">1.</span> <span class="num">2.</span> <span class="num">2.</span> <span class="num">2.</span> <span class="num">2.</span> <span class="num">1.</span>]
                                                                       [<span class="num">2.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">2.</span>]
                                                                       [<span class="num">2.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">2.</span>]
                                                                       [<span class="num">2.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">2.</span>]
                                                                       [<span class="num">2.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">4.</span> <span class="num">2.</span>]
                                                                       [<span class="num">1.</span> <span class="num">2.</span> <span class="num">2.</span> <span class="num">2.</span> <span class="num">2.</span> <span class="num">1.</span>] ] ] ]


Defined in src/operator/nn/upsampling.cc:L172</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#abs" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="abs(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="abs(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">abs</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@abs(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise absolute value of the input.

Example::

   abs([-<span class="num">2</span>, <span class="num">0</span>, <span class="num">3</span>]) = [<span class="num">2</span>, <span class="num">0</span>, <span class="num">3</span>]

The storage <span class="kw">type</span> of ``abs`` output depends upon the input storage <span class="kw">type</span>:

   - abs(default) = default
   - abs(row_sparse) = row_sparse
   - abs(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L720</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#adam_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="adam_update(po:org.apache.mxnet.javaapi.adam_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="adam_update(adam_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">adam_update</span><span class="params">(<span name="po">po: <a href="adam_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.adam_updateParam">adam_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@adam_update(po:org.apache.mxnet.javaapi.adam_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> Adam optimizer. Adam is seen as a generalization
of AdaGrad.

Adam update consists of the following steps, where g represents gradient and m, v
are <span class="num">1</span>st and <span class="num">2</span>nd order moment estimates (mean and variance).

.. math::

 g_t = \nabla J(W_{t-<span class="num">1</span>})\\
 m_t = \beta_1 m_{t-<span class="num">1</span>} + (<span class="num">1</span> - \beta_1) g_t\\
 v_t = \beta_2 v_{t-<span class="num">1</span>} + (<span class="num">1</span> - \beta_2) g_t^<span class="num">2</span>\\
 W_t = W_{t-<span class="num">1</span>} - \alpha \frac{ m_t }{ \sqrt{ v_t } + \epsilon }

It updates the weights using::

 m = beta1*m + (<span class="num">1</span>-beta1)*grad
 v = beta2*v + (<span class="num">1</span>-beta2)*(grad**<span class="num">2</span>)
 w += - learning_rate * m / (sqrt(v) + epsilon)

However, <span class="kw">if</span> grad's storage <span class="kw">type</span> is ``row_sparse``, ``lazy_update`` is True and the storage
<span class="kw">type</span> of weight is the same as those of m and v,
only the row slices whose indices appear in grad.indices are updated (<span class="kw">for</span> w, m and v)::

 <span class="kw">for</span> row in grad.indices:
     m[row] = beta1*m[row] + (<span class="num">1</span>-beta1)*grad[row]
     v[row] = beta2*v[row] + (<span class="num">1</span>-beta2)*(grad[row]**<span class="num">2</span>)
     w[row] += - learning_rate * m[row] / (sqrt(v[row]) + epsilon)



Defined in src/operator/optimizer_op.cc:L687</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#add_n" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="add_n(args:Array[org.apache.mxnet.javaapi.NDArray],out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="add_n(Array[NDArray],NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">add_n</span><span class="params">(<span name="args">args: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@add_n(args:Array[org.apache.mxnet.javaapi.NDArray],out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Adds all input arguments element-wise.

.. math::
   add\_n(a_1, a_2, ..., a_n) = a_1 + a_2 + ... + a_n

``add_n`` is potentially more efficient than calling ``add`` by `n` times.

The storage <span class="kw">type</span> of ``add_n`` output depends on storage types of inputs

- add_n(row_sparse, row_sparse, ..) = row_sparse
- add_n(default, csr, default) = default
- add_n(any input combinations longer than <span class="num">4</span> (&gt;<span class="num">4</span>) <span class="kw">with</span> at least one default <span class="kw">type</span>) = default
- otherwise, ``add_n`` falls all inputs back to default storage and generates default storage



Defined in src/operator/tensor/elemwise_sum.cc:L155</pre></div><dl class="paramcmts block"><dt class="param">args</dt><dd class="cmt"><p>Positional input arguments</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#all_finite" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="all_finite(data:org.apache.mxnet.javaapi.NDArray,init_output:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="all_finite(NDArray,Boolean,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">all_finite</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="init_output">init_output: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@all_finite(data:org.apache.mxnet.javaapi.NDArray,init_output:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Check <span class="kw">if</span> all the float numbers in the array are finite (used <span class="kw">for</span> AMP)


Defined in src/operator/contrib/all_finite.cc:L100</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Array</p></dd><dt class="param">init_output</dt><dd class="cmt"><p>Initialize output to 1.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#amp_cast" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="amp_cast(data:org.apache.mxnet.javaapi.NDArray,dtype:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="amp_cast(NDArray,String,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">amp_cast</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="dtype">dtype: <span class="extype" name="scala.Predef.String">String</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@amp_cast(data:org.apache.mxnet.javaapi.NDArray,dtype:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Cast function between low precision float/FP32 used by AMP.

It casts only between low precision float/FP32 and does not <span class="kw">do</span> anything <span class="kw">for</span> other types.


Defined in src/operator/tensor/amp_cast.cc:L125</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input.</p></dd><dt class="param">dtype</dt><dd class="cmt"><p>Output data type.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#amp_multicast" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="amp_multicast(data:Array[org.apache.mxnet.javaapi.NDArray],num_outputs:Integer,cast_narrow:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="amp_multicast(Array[NDArray],Integer,Boolean,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">amp_multicast</span><span class="params">(<span name="data">data: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>, <span name="num_outputs">num_outputs: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="cast_narrow">cast_narrow: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@amp_multicast(data:Array[org.apache.mxnet.javaapi.NDArray],num_outputs:Integer,cast_narrow:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Cast function used by AMP, that casts its inputs to the common widest <span class="kw">type</span>.

It casts only between low precision float/FP32 and does not <span class="kw">do</span> anything <span class="kw">for</span> other types.



Defined in src/operator/tensor/amp_cast.cc:L169</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Weights</p></dd><dt class="param">num_outputs</dt><dd class="cmt"><p>Number of input/output pairs to be casted to the widest type.</p></dd><dt class="param">cast_narrow</dt><dd class="cmt"><p>Whether to cast to the narrowest type</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#arccos" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="arccos(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="arccos(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">arccos</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@arccos(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise inverse cosine of the input array.

The input should be in range `[-<span class="num">1</span>, <span class="num">1</span>]`.
The output is in the closed interval :math:`[<span class="num">0</span>, \pi]`

.. math::
   arccos([-<span class="num">1</span>, -<span class="num">.707</span>, <span class="num">0</span>, <span class="num">.707</span>, <span class="num">1</span>]) = [\pi, <span class="num">3</span>\pi/<span class="num">4</span>, \pi/<span class="num">2</span>, \pi/<span class="num">4</span>, <span class="num">0</span>]

The storage <span class="kw">type</span> of ``arccos`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L233</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#arccosh" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="arccosh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="arccosh(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">arccosh</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@arccosh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the element-wise inverse hyperbolic cosine of the input array, \
computed element-wise.

The storage <span class="kw">type</span> of ``arccosh`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L535</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#arcsin" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="arcsin(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="arcsin(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">arcsin</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@arcsin(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise inverse sine of the input array.

The input should be in the range `[-<span class="num">1</span>, <span class="num">1</span>]`.
The output is in the closed interval of [:math:`-\pi/<span class="num">2</span>`, :math:`\pi/<span class="num">2</span>`].

.. math::
   arcsin([-<span class="num">1</span>, -<span class="num">.707</span>, <span class="num">0</span>, <span class="num">.707</span>, <span class="num">1</span>]) = [-\pi/<span class="num">2</span>, -\pi/<span class="num">4</span>, <span class="num">0</span>, \pi/<span class="num">4</span>, \pi/<span class="num">2</span>]

The storage <span class="kw">type</span> of ``arcsin`` output depends upon the input storage <span class="kw">type</span>:

   - arcsin(default) = default
   - arcsin(row_sparse) = row_sparse
   - arcsin(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L187</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#arcsinh" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="arcsinh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="arcsinh(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">arcsinh</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@arcsinh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the element-wise inverse hyperbolic sine of the input array, \
computed element-wise.

The storage <span class="kw">type</span> of ``arcsinh`` output depends upon the input storage <span class="kw">type</span>:

   - arcsinh(default) = default
   - arcsinh(row_sparse) = row_sparse
   - arcsinh(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L494</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#arctan" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="arctan(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="arctan(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">arctan</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@arctan(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise inverse tangent of the input array.

The output is in the closed interval :math:`[-\pi/<span class="num">2</span>, \pi/<span class="num">2</span>]`

.. math::
   arctan([-<span class="num">1</span>, <span class="num">0</span>, <span class="num">1</span>]) = [-\pi/<span class="num">4</span>, <span class="num">0</span>, \pi/<span class="num">4</span>]

The storage <span class="kw">type</span> of ``arctan`` output depends upon the input storage <span class="kw">type</span>:

   - arctan(default) = default
   - arctan(row_sparse) = row_sparse
   - arctan(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L282</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#arctanh" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="arctanh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="arctanh(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">arctanh</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@arctanh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the element-wise inverse hyperbolic tangent of the input array, \
computed element-wise.

The storage <span class="kw">type</span> of ``arctanh`` output depends upon the input storage <span class="kw">type</span>:

   - arctanh(default) = default
   - arctanh(row_sparse) = row_sparse
   - arctanh(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L579</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#argmax" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="argmax(po:org.apache.mxnet.javaapi.argmaxParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="argmax(argmaxParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">argmax</span><span class="params">(<span name="po">po: <a href="argmaxParam.html" class="extype" name="org.apache.mxnet.javaapi.argmaxParam">argmaxParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@argmax(po:org.apache.mxnet.javaapi.argmaxParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns indices of the maximum values along an axis.

In the <span class="kw">case</span> of multiple occurrences of maximum values, the indices corresponding to the first occurrence
are returned.

Examples::

  x = `[ [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
       [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>] ]

  <span class="cmt">// argmax along axis 0</span>
  argmax(x, axis=<span class="num">0</span>) = [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>]

  <span class="cmt">// argmax along axis 1</span>
  argmax(x, axis=<span class="num">1</span>) = [ <span class="num">2.</span>,  <span class="num">2.</span>]

  <span class="cmt">// argmax along axis 1 keeping same dims as an input array</span>
  argmax(x, axis=<span class="num">1</span>, keepdims=True) = `[ [ <span class="num">2.</span>],
                                      [ <span class="num">2.</span>] ]



Defined in src/operator/tensor/broadcast_reduce_op_index.cc:L51</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#argmax_channel" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="argmax_channel(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="argmax_channel(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">argmax_channel</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@argmax_channel(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns argmax indices of each channel from the input array.

The result will be an NDArray of shape (num_channel,).

In <span class="kw">case</span> of multiple occurrences of the maximum values, the indices corresponding to the first occurrence
are returned.

Examples::

  x = `[ [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
       [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>] ]

  argmax_channel(x) = [ <span class="num">2.</span>,  <span class="num">2.</span>]



Defined in src/operator/tensor/broadcast_reduce_op_index.cc:L96</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#argmin" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="argmin(po:org.apache.mxnet.javaapi.argminParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="argmin(argminParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">argmin</span><span class="params">(<span name="po">po: <a href="argminParam.html" class="extype" name="org.apache.mxnet.javaapi.argminParam">argminParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@argmin(po:org.apache.mxnet.javaapi.argminParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns indices of the minimum values along an axis.

In the <span class="kw">case</span> of multiple occurrences of minimum values, the indices corresponding to the first occurrence
are returned.

Examples::

  x = `[ [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
       [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>] ]

  <span class="cmt">// argmin along axis 0</span>
  argmin(x, axis=<span class="num">0</span>) = [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>]

  <span class="cmt">// argmin along axis 1</span>
  argmin(x, axis=<span class="num">1</span>) = [ <span class="num">0.</span>,  <span class="num">0.</span>]

  <span class="cmt">// argmin along axis 1 keeping same dims as an input array</span>
  argmin(x, axis=<span class="num">1</span>, keepdims=True) = `[ [ <span class="num">0.</span>],
                                      [ <span class="num">0.</span>] ]



Defined in src/operator/tensor/broadcast_reduce_op_index.cc:L76</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#argsort" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="argsort(po:org.apache.mxnet.javaapi.argsortParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="argsort(argsortParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">argsort</span><span class="params">(<span name="po">po: <a href="argsortParam.html" class="extype" name="org.apache.mxnet.javaapi.argsortParam">argsortParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@argsort(po:org.apache.mxnet.javaapi.argsortParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the indices that would sort an input array along the given axis.

This function performs sorting along the given axis and returns an array of indices having same shape
as an input array that index data in sorted order.

Examples::

  x = `[ [ <span class="num">0.3</span>,  <span class="num">0.2</span>,  <span class="num">0.4</span>],
       [ <span class="num">0.1</span>,  <span class="num">0.3</span>,  <span class="num">0.2</span>] ]

  <span class="cmt">// sort along axis -1</span>
  argsort(x) = `[ [ <span class="num">1.</span>,  <span class="num">0.</span>,  <span class="num">2.</span>],
                [ <span class="num">0.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>] ]

  <span class="cmt">// sort along axis 0</span>
  argsort(x, axis=<span class="num">0</span>) = `[ [ <span class="num">1.</span>,  <span class="num">0.</span>,  <span class="num">1.</span>]
                        [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>] ]

  <span class="cmt">// flatten and then sort</span>
  argsort(x, axis=<span class="std">None</span>) = [ <span class="num">3.</span>,  <span class="num">1.</span>,  <span class="num">5.</span>,  <span class="num">0.</span>,  <span class="num">4.</span>,  <span class="num">2.</span>]


Defined in src/operator/tensor/ordering_op.cc:L184</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#batch_dot" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="batch_dot(po:org.apache.mxnet.javaapi.batch_dotParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="batch_dot(batch_dotParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">batch_dot</span><span class="params">(<span name="po">po: <a href="batch_dotParam.html" class="extype" name="org.apache.mxnet.javaapi.batch_dotParam">batch_dotParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@batch_dot(po:org.apache.mxnet.javaapi.batch_dotParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Batchwise dot product.

``batch_dot`` is used to compute dot product of ``x`` and ``y`` when ``x`` and
``y`` are data in batch, namely N-D (N &gt;= <span class="num">3</span>) arrays in shape of `(B0, ..., B_i, :, :)`.

For example, given ``x`` <span class="kw">with</span> shape `(B_0, ..., B_i, N, M)` and ``y`` <span class="kw">with</span> shape
`(B_0, ..., B_i, M, K)`, the result array will have shape `(B_0, ..., B_i, N, K)`,
which is computed by::

   batch_dot(x,y)[b_0, ..., b_i, :, :] = dot(x[b_0, ..., b_i, :, :], y[b_0, ..., b_i, :, :])



Defined in src/operator/tensor/dot.cc:L127</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#batch_take" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="batch_take(a:org.apache.mxnet.javaapi.NDArray,indices:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="batch_take(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">batch_take</span><span class="params">(<span name="a">a: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="indices">indices: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@batch_take(a:org.apache.mxnet.javaapi.NDArray,indices:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Takes elements from a data batch.

.. note::
  `batch_take` is deprecated. Use `pick` instead.

Given an input array of shape ``(d0, d1)`` and indices of shape ``(i0,)``, the result will be
an output array of shape ``(i0,)`` <span class="kw">with</span>::

  output[i] = input[i, indices[i] ]

Examples::

  x = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>],
       [ <span class="num">3.</span>,  <span class="num">4.</span>],
       [ <span class="num">5.</span>,  <span class="num">6.</span>] ]

  <span class="cmt">// takes elements with specified indices</span>
  batch_take(x, [<span class="num">0</span>,<span class="num">1</span>,<span class="num">0</span>]) = [ <span class="num">1.</span>  <span class="num">4.</span>  <span class="num">5.</span>]



Defined in src/operator/tensor/indexing_op.cc:L835</pre></div><dl class="paramcmts block"><dt class="param">a</dt><dd class="cmt"><p>The input array</p></dd><dt class="param">indices</dt><dd class="cmt"><p>The index array</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_add" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_add(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_add(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_add</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_add(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise sum of the input arrays <span class="kw">with</span> broadcasting.

`broadcast_plus` is an alias to the function `broadcast_add`.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_add(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                          [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ]

   broadcast_plus(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                           [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ]

Supported sparse operations:

   broadcast_add(csr, dense(<span class="num">1</span>D)) = dense
   broadcast_add(dense(<span class="num">1</span>D), csr) = dense



Defined in src/operator/tensor/elemwise_binary_broadcast_op_basic.cc:L57</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_axes" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_axes(po:org.apache.mxnet.javaapi.broadcast_axesParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_axes(broadcast_axesParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_axes</span><span class="params">(<span name="po">po: <a href="broadcast_axesParam.html" class="extype" name="org.apache.mxnet.javaapi.broadcast_axesParam">broadcast_axesParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_axes(po:org.apache.mxnet.javaapi.broadcast_axesParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Broadcasts the input array over particular axes.

Broadcasting is allowed on axes <span class="kw">with</span> size <span class="num">1</span>, such as from `(<span class="num">2</span>,<span class="num">1</span>,<span class="num">3</span>,<span class="num">1</span>)` to
`(<span class="num">2</span>,<span class="num">8</span>,<span class="num">3</span>,<span class="num">9</span>)`. Elements will be duplicated on the broadcasted axes.

`broadcast_axes` is an alias to the function `broadcast_axis`.

Example::

   <span class="cmt">// given x of shape (1,2,1)</span>
   x = `[ `[ [ <span class="num">1.</span>],
         [ <span class="num">2.</span>] ] ]

   <span class="cmt">// broadcast x on on axis 2</span>
   broadcast_axis(x, axis=<span class="num">2</span>, size=<span class="num">3</span>) = `[ `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                                         [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ] ]
   <span class="cmt">// broadcast x on on axes 0 and 2</span>
   broadcast_axis(x, axis=(<span class="num">0</span>,<span class="num">2</span>), size=(<span class="num">2</span>,<span class="num">3</span>)) = `[ `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                                                 [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ],
                                                `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                                                 [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ] ]


Defined in src/operator/tensor/broadcast_reduce_op_value.cc:L92</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_axis" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_axis(po:org.apache.mxnet.javaapi.broadcast_axisParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_axis(broadcast_axisParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_axis</span><span class="params">(<span name="po">po: <a href="broadcast_axisParam.html" class="extype" name="org.apache.mxnet.javaapi.broadcast_axisParam">broadcast_axisParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_axis(po:org.apache.mxnet.javaapi.broadcast_axisParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Broadcasts the input array over particular axes.

Broadcasting is allowed on axes <span class="kw">with</span> size <span class="num">1</span>, such as from `(<span class="num">2</span>,<span class="num">1</span>,<span class="num">3</span>,<span class="num">1</span>)` to
`(<span class="num">2</span>,<span class="num">8</span>,<span class="num">3</span>,<span class="num">9</span>)`. Elements will be duplicated on the broadcasted axes.

`broadcast_axes` is an alias to the function `broadcast_axis`.

Example::

   <span class="cmt">// given x of shape (1,2,1)</span>
   x = `[ `[ [ <span class="num">1.</span>],
         [ <span class="num">2.</span>] ] ]

   <span class="cmt">// broadcast x on on axis 2</span>
   broadcast_axis(x, axis=<span class="num">2</span>, size=<span class="num">3</span>) = `[ `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                                         [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ] ]
   <span class="cmt">// broadcast x on on axes 0 and 2</span>
   broadcast_axis(x, axis=(<span class="num">0</span>,<span class="num">2</span>), size=(<span class="num">2</span>,<span class="num">3</span>)) = `[ `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                                                 [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ],
                                                `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                                                 [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ] ]


Defined in src/operator/tensor/broadcast_reduce_op_value.cc:L92</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_div" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_div(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_div(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_div</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_div(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise division of the input arrays <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">6.</span>,  <span class="num">6.</span>,  <span class="num">6.</span>],
        [ <span class="num">6.</span>,  <span class="num">6.</span>,  <span class="num">6.</span>] ]

   y = `[ [ <span class="num">2.</span>],
        [ <span class="num">3.</span>] ]

   broadcast_div(x, y) = `[ [ <span class="num">3.</span>,  <span class="num">3.</span>,  <span class="num">3.</span>],
                          [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ]

Supported sparse operations:

   broadcast_div(csr, dense(<span class="num">1</span>D)) = csr



Defined in src/operator/tensor/elemwise_binary_broadcast_op_basic.cc:L186</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_equal" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_equal(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_equal(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_equal</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_equal(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of element-wise **equal to** (==) comparison operation <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_equal(x, y) = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
                            [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_logic.cc:L45</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_greater" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_greater(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_greater(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_greater</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_greater(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of element-wise **greater than** (&gt;) comparison operation <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_greater(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                              [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_logic.cc:L81</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_greater_equal" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_greater_equal(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_greater_equal(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_greater_equal</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_greater_equal(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of element-wise **greater than or equal to** (&gt;=) comparison operation <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_greater_equal(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                                    [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_logic.cc:L99</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_hypot" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_hypot(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_hypot(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_hypot</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_hypot(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre> Returns the hypotenuse of a right angled triangle, given its <span class="lit">"legs"</span>
<span class="kw">with</span> broadcasting.

It is equivalent to doing :math:`sqrt(x_1^<span class="num">2</span> + x_2^<span class="num">2</span>)`.

Example::

   x = `[ [ <span class="num">3.</span>,  <span class="num">3.</span>,  <span class="num">3.</span>] ]

   y = `[ [ <span class="num">4.</span>],
        [ <span class="num">4.</span>] ]

   broadcast_hypot(x, y) = `[ [ <span class="num">5.</span>,  <span class="num">5.</span>,  <span class="num">5.</span>],
                            [ <span class="num">5.</span>,  <span class="num">5.</span>,  <span class="num">5.</span>] ]

   z = `[ [ <span class="num">0.</span>],
        [ <span class="num">4.</span>] ]

   broadcast_hypot(x, z) = `[ [ <span class="num">3.</span>,  <span class="num">3.</span>,  <span class="num">3.</span>],
                            [ <span class="num">5.</span>,  <span class="num">5.</span>,  <span class="num">5.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_extended.cc:L157</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_lesser" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_lesser(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_lesser(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_lesser</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_lesser(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of element-wise **lesser than** (&lt;) comparison operation <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_lesser(x, y) = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
                             [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_logic.cc:L117</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_lesser_equal" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_lesser_equal(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_lesser_equal(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_lesser_equal</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_lesser_equal(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of element-wise **lesser than or equal to** (&lt;=) comparison operation <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_lesser_equal(x, y) = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
                                   [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_logic.cc:L135</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_like" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_like(po:org.apache.mxnet.javaapi.broadcast_likeParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_like(broadcast_likeParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_like</span><span class="params">(<span name="po">po: <a href="broadcast_likeParam.html" class="extype" name="org.apache.mxnet.javaapi.broadcast_likeParam">broadcast_likeParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_like(po:org.apache.mxnet.javaapi.broadcast_likeParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Broadcasts lhs to have the same shape as rhs.

Broadcasting is a mechanism that allows NDArrays to perform arithmetic operations
<span class="kw">with</span> arrays of different shapes efficiently without creating multiple copies of arrays.
Also see, `Broadcasting &lt;https:<span class="cmt">//docs.scipy.org/doc/numpy/user/basics.broadcasting.html>`_ for more explanation.</span>

Broadcasting is allowed on axes <span class="kw">with</span> size <span class="num">1</span>, such as from `(<span class="num">2</span>,<span class="num">1</span>,<span class="num">3</span>,<span class="num">1</span>)` to
`(<span class="num">2</span>,<span class="num">8</span>,<span class="num">3</span>,<span class="num">9</span>)`. Elements will be duplicated on the broadcasted axes.

For example::

   broadcast_like(`[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>] ], `[ [<span class="num">5</span>,<span class="num">6</span>,<span class="num">7</span>],[<span class="num">7</span>,<span class="num">8</span>,<span class="num">9</span>] ]) = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>],
                                                   [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>] ])

   broadcast_like([<span class="num">9</span>], [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>,<span class="num">5</span>], lhs_axes=(<span class="num">0</span>,), rhs_axes=(-<span class="num">1</span>,)) = [<span class="num">9</span>,<span class="num">9</span>,<span class="num">9</span>,<span class="num">9</span>,<span class="num">9</span>]



Defined in src/operator/tensor/broadcast_reduce_op_value.cc:L178</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_logical_and" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_logical_and(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_logical_and(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_logical_and</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_logical_and(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of element-wise **logical and** <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_logical_and(x, y) = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
                                  [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_logic.cc:L153</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_logical_or" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_logical_or(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_logical_or(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_logical_or</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_logical_or(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of element-wise **logical or** <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>] ]

   y = `[ [ <span class="num">1.</span>],
        [ <span class="num">0.</span>] ]

   broadcast_logical_or(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                                 [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_logic.cc:L171</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_logical_xor" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_logical_xor(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_logical_xor(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_logical_xor</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_logical_xor(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of element-wise **logical xor** <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>] ]

   y = `[ [ <span class="num">1.</span>],
        [ <span class="num">0.</span>] ]

   broadcast_logical_xor(x, y) = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">1.</span>],
                                  [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_logic.cc:L189</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_maximum" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_maximum(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_maximum(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_maximum</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_maximum(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise maximum of the input arrays <span class="kw">with</span> broadcasting.

This function compares two input arrays and returns a <span class="kw">new</span> array having the element-wise maxima.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_maximum(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                              [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_extended.cc:L80</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_minimum" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_minimum(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_minimum(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_minimum</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_minimum(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise minimum of the input arrays <span class="kw">with</span> broadcasting.

This function compares two input arrays and returns a <span class="kw">new</span> array having the element-wise minima.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_maximum(x, y) = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
                              [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_extended.cc:L116</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_minus" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_minus(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_minus(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_minus</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_minus(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise difference of the input arrays <span class="kw">with</span> broadcasting.

`broadcast_minus` is an alias to the function `broadcast_sub`.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_sub(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                          [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]

   broadcast_minus(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                            [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]

Supported sparse operations:

   broadcast_sub/minus(csr, dense(<span class="num">1</span>D)) = dense
   broadcast_sub/minus(dense(<span class="num">1</span>D), csr) = dense



Defined in src/operator/tensor/elemwise_binary_broadcast_op_basic.cc:L105</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_mod" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_mod(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_mod(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_mod</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_mod(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise modulo of the input arrays <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">8.</span>,  <span class="num">8.</span>,  <span class="num">8.</span>],
        [ <span class="num">8.</span>,  <span class="num">8.</span>,  <span class="num">8.</span>] ]

   y = `[ [ <span class="num">2.</span>],
        [ <span class="num">3.</span>] ]

   broadcast_mod(x, y) = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
                          [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_basic.cc:L221</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_mul" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_mul(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_mul(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_mul</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_mul(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise product of the input arrays <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_mul(x, y) = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
                          [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

Supported sparse operations:

   broadcast_mul(csr, dense(<span class="num">1</span>D)) = csr



Defined in src/operator/tensor/elemwise_binary_broadcast_op_basic.cc:L145</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_not_equal" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_not_equal(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_not_equal(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_not_equal</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_not_equal(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of element-wise **not equal to** (!=) comparison operation <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_not_equal(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                                [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_logic.cc:L63</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_plus" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_plus(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_plus(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_plus</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_plus(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise sum of the input arrays <span class="kw">with</span> broadcasting.

`broadcast_plus` is an alias to the function `broadcast_add`.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_add(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                          [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ]

   broadcast_plus(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                           [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>] ]

Supported sparse operations:

   broadcast_add(csr, dense(<span class="num">1</span>D)) = dense
   broadcast_add(dense(<span class="num">1</span>D), csr) = dense



Defined in src/operator/tensor/elemwise_binary_broadcast_op_basic.cc:L57</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_power" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_power(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_power(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_power</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_power(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns result of first array elements raised to powers from second array, element-wise <span class="kw">with</span> broadcasting.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_power(x, y) = `[ [ <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>],
                            [ <span class="num">4.</span>,  <span class="num">4.</span>,  <span class="num">4.</span>] ]



Defined in src/operator/tensor/elemwise_binary_broadcast_op_extended.cc:L44</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_sub" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_sub(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_sub(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_sub</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_sub(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise difference of the input arrays <span class="kw">with</span> broadcasting.

`broadcast_minus` is an alias to the function `broadcast_sub`.

Example::

   x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
        [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

   y = `[ [ <span class="num">0.</span>],
        [ <span class="num">1.</span>] ]

   broadcast_sub(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                          [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]

   broadcast_minus(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                            [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]

Supported sparse operations:

   broadcast_sub/minus(csr, dense(<span class="num">1</span>D)) = dense
   broadcast_sub/minus(dense(<span class="num">1</span>D), csr) = dense



Defined in src/operator/tensor/elemwise_binary_broadcast_op_basic.cc:L105</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>First input to the function</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Second input to the function</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#broadcast_to" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="broadcast_to(data:org.apache.mxnet.javaapi.NDArray,shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="broadcast_to(NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">broadcast_to</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="shape">shape: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@broadcast_to(data:org.apache.mxnet.javaapi.NDArray,shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Broadcasts the input array to a <span class="kw">new</span> shape.

Broadcasting is a mechanism that allows NDArrays to perform arithmetic operations
<span class="kw">with</span> arrays of different shapes efficiently without creating multiple copies of arrays.
Also see, `Broadcasting &lt;https:<span class="cmt">//docs.scipy.org/doc/numpy/user/basics.broadcasting.html>`_ for more explanation.</span>

Broadcasting is allowed on axes <span class="kw">with</span> size <span class="num">1</span>, such as from `(<span class="num">2</span>,<span class="num">1</span>,<span class="num">3</span>,<span class="num">1</span>)` to
`(<span class="num">2</span>,<span class="num">8</span>,<span class="num">3</span>,<span class="num">9</span>)`. Elements will be duplicated on the broadcasted axes.

For example::

   broadcast_to(`[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>] ], shape=(<span class="num">2</span>,<span class="num">3</span>)) = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>],
                                           [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>] ])

The dimension which you <span class="kw">do</span> not want to change can also be kept as `<span class="num">0</span>` which means copy the original value.
So <span class="kw">with</span> `shape=(<span class="num">2</span>,<span class="num">0</span>)`, we will obtain the same result as in the above example.



Defined in src/operator/tensor/broadcast_reduce_op_value.cc:L116</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input</p></dd><dt class="param">shape</dt><dd class="cmt"><p>The shape of the desired array. We can set the dim to zero if it's same as the original. E.g <code>A = broadcast_to(B, shape=(10, 0, 0))</code> has the same meaning as <code>A = broadcast_axis(B, axis=0, size=10)</code>.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#cast" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="cast(data:org.apache.mxnet.javaapi.NDArray,dtype:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="cast(NDArray,String,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">cast</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="dtype">dtype: <span class="extype" name="scala.Predef.String">String</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@cast(data:org.apache.mxnet.javaapi.NDArray,dtype:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Casts all elements of the input to a <span class="kw">new</span> <span class="kw">type</span>.

.. note:: ``Cast`` is deprecated. Use ``cast`` instead.

Example::

   cast([<span class="num">0.9</span>, <span class="num">1.3</span>], dtype=<span class="lit">'int32'</span>) = [<span class="num">0</span>, <span class="num">1</span>]
   cast([<span class="num">1</span>e20, <span class="num">11.1</span>], dtype='float16') = [inf, <span class="num">11.09375</span>]
   cast([<span class="num">300</span>, <span class="num">11.1</span>, <span class="num">10.9</span>, -<span class="num">1</span>, -<span class="num">3</span>], dtype=<span class="lit">'uint8'</span>) = [<span class="num">44</span>, <span class="num">11</span>, <span class="num">10</span>, <span class="num">255</span>, <span class="num">253</span>]



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L664</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input.</p></dd><dt class="param">dtype</dt><dd class="cmt"><p>Output data type.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#cast_storage" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="cast_storage(data:org.apache.mxnet.javaapi.NDArray,stype:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="cast_storage(NDArray,String,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">cast_storage</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="stype">stype: <span class="extype" name="scala.Predef.String">String</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@cast_storage(data:org.apache.mxnet.javaapi.NDArray,stype:String,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Casts tensor storage <span class="kw">type</span> to the <span class="kw">new</span> <span class="kw">type</span>.

When an NDArray <span class="kw">with</span> default storage <span class="kw">type</span> is cast to csr or row_sparse storage,
the result is compact, which means:

- <span class="kw">for</span> csr, zero values will not be retained
- <span class="kw">for</span> row_sparse, row slices of all zeros will not be retained

The storage <span class="kw">type</span> of ``cast_storage`` output depends on stype parameter:

- cast_storage(csr, 'default') = default
- cast_storage(row_sparse, 'default') = default
- cast_storage(default, <span class="lit">'csr'</span>) = csr
- cast_storage(default, 'row_sparse') = row_sparse
- cast_storage(csr, <span class="lit">'csr'</span>) = csr
- cast_storage(row_sparse, 'row_sparse') = row_sparse

Example::

    dense = `[ [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>],
             [ <span class="num">2.</span>,  <span class="num">0.</span>,  <span class="num">3.</span>],
             [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
             [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]

    # cast to row_sparse storage <span class="kw">type</span>
    rsp = cast_storage(dense, 'row_sparse')
    rsp.indices = [<span class="num">0</span>, <span class="num">1</span>]
    rsp.values = `[ [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>],
                  [ <span class="num">2.</span>,  <span class="num">0.</span>,  <span class="num">3.</span>] ]

    # cast to csr storage <span class="kw">type</span>
    csr = cast_storage(dense, <span class="lit">'csr'</span>)
    csr.indices = [<span class="num">1</span>, <span class="num">0</span>, <span class="num">2</span>]
    csr.values = [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>]
    csr.indptr = [<span class="num">0</span>, <span class="num">1</span>, <span class="num">3</span>, <span class="num">3</span>, <span class="num">3</span>]



Defined in src/operator/tensor/cast_storage.cc:L71</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input.</p></dd><dt class="param">stype</dt><dd class="cmt"><p>Output storage type.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#cbrt" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="cbrt(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="cbrt(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">cbrt</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@cbrt(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise cube-root value of the input.

.. math::
   cbrt(x) = \sqrt[<span class="num">3</span>]{x}

Example::

   cbrt([<span class="num">1</span>, <span class="num">8</span>, -<span class="num">125</span>]) = [<span class="num">1</span>, <span class="num">2</span>, -<span class="num">5</span>]

The storage <span class="kw">type</span> of ``cbrt`` output depends upon the input storage <span class="kw">type</span>:

   - cbrt(default) = default
   - cbrt(row_sparse) = row_sparse
   - cbrt(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_pow.cc:L270</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#ceil" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="ceil(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="ceil(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">ceil</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@ceil(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise ceiling of the input.

The ceil of the scalar x is the smallest integer i, such that i &gt;= x.

Example::

   ceil([-<span class="num">2.1</span>, -<span class="num">1.9</span>, <span class="num">1.5</span>, <span class="num">1.9</span>, <span class="num">2.1</span>]) = [-<span class="num">2.</span>, -<span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>]

The storage <span class="kw">type</span> of ``ceil`` output depends upon the input storage <span class="kw">type</span>:

   - ceil(default) = default
   - ceil(row_sparse) = row_sparse
   - ceil(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L817</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#choose_element_0index" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="choose_element_0index(po:org.apache.mxnet.javaapi.choose_element_0indexParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="choose_element_0index(choose_element_0indexParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">choose_element_0index</span><span class="params">(<span name="po">po: <a href="choose_element_0indexParam.html" class="extype" name="org.apache.mxnet.javaapi.choose_element_0indexParam">choose_element_0indexParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@choose_element_0index(po:org.apache.mxnet.javaapi.choose_element_0indexParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Picks elements from an input array according to the input indices along the given axis.

Given an input array of shape ``(d0, d1)`` and indices of shape ``(i0,)``, the result will be
an output array of shape ``(i0,)`` <span class="kw">with</span>::

  output[i] = input[i, indices[i] ]

By default, <span class="kw">if</span> any index mentioned is too large, it is replaced by the index that addresses
the last element along an axis (the `clip` mode).

This function supports n-dimensional input and (n-<span class="num">1</span>)-dimensional indices arrays.

Examples::

  x = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>],
       [ <span class="num">3.</span>,  <span class="num">4.</span>],
       [ <span class="num">5.</span>,  <span class="num">6.</span>] ]

  <span class="cmt">// picks elements with specified indices along axis 0</span>
  pick(x, y=[<span class="num">0</span>,<span class="num">1</span>], <span class="num">0</span>) = [ <span class="num">1.</span>,  <span class="num">4.</span>]

  <span class="cmt">// picks elements with specified indices along axis 1</span>
  pick(x, y=[<span class="num">0</span>,<span class="num">1</span>,<span class="num">0</span>], <span class="num">1</span>) = [ <span class="num">1.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>]

  <span class="cmt">// picks elements with specified indices along axis 1 using 'wrap' mode</span>
  <span class="cmt">// to place indicies that would normally be out of bounds</span>
  pick(x, y=[<span class="num">2</span>,-<span class="num">1</span>,-<span class="num">2</span>], <span class="num">1</span>, mode=<span class="lit">'wrap'</span>) = [ <span class="num">1.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>]

  y = `[ [ <span class="num">1.</span>],
       [ <span class="num">0.</span>],
       [ <span class="num">2.</span>] ]

  <span class="cmt">// picks elements with specified indices along axis 1 and dims are maintained</span>
  pick(x, y, <span class="num">1</span>, keepdims=True) = `[ [ <span class="num">2.</span>],
                                 [ <span class="num">3.</span>],
                                 [ <span class="num">6.</span>] ]



Defined in src/operator/tensor/broadcast_reduce_op_index.cc:L150</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#clip" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="clip(data:org.apache.mxnet.javaapi.NDArray,a_min:Float,a_max:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="clip(NDArray,Float,Float,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">clip</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="a_min">a_min: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="a_max">a_max: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@clip(data:org.apache.mxnet.javaapi.NDArray,a_min:Float,a_max:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Clips (limits) the values in an array.
Given an interval, values outside the interval are clipped to the interval edges.
Clipping ``x`` between `a_min` and `a_max` would be::
.. math::
   clip(x, a_min, a_max) = \max(\min(x, a_max), a_min))
Example::
    x = [<span class="num">0</span>, <span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>, <span class="num">5</span>, <span class="num">6</span>, <span class="num">7</span>, <span class="num">8</span>, <span class="num">9</span>]
    clip(x,<span class="num">1</span>,<span class="num">8</span>) = [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>,  <span class="num">8.</span>]
The storage <span class="kw">type</span> of ``clip`` output depends on storage types of inputs and the a_min, a_max \
parameter values:
   - clip(default) = default
   - clip(row_sparse, a_min &lt;= <span class="num">0</span>, a_max &gt;= <span class="num">0</span>) = row_sparse
   - clip(csr, a_min &lt;= <span class="num">0</span>, a_max &gt;= <span class="num">0</span>) = csr
   - clip(row_sparse, a_min &lt; <span class="num">0</span>, a_max &lt; <span class="num">0</span>) = default
   - clip(row_sparse, a_min &gt; <span class="num">0</span>, a_max &gt; <span class="num">0</span>) = default
   - clip(csr, a_min &lt; <span class="num">0</span>, a_max &lt; <span class="num">0</span>) = csr
   - clip(csr, a_min &gt; <span class="num">0</span>, a_max &gt; <span class="num">0</span>) = csr


Defined in src/operator/tensor/matrix_op.cc:L676</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input array.</p></dd><dt class="param">a_min</dt><dd class="cmt"><p>Minimum value</p></dd><dt class="param">a_max</dt><dd class="cmt"><p>Maximum value</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#col2im" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="col2im(po:org.apache.mxnet.javaapi.col2imParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="col2im(col2imParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">col2im</span><span class="params">(<span name="po">po: <a href="col2imParam.html" class="extype" name="org.apache.mxnet.javaapi.col2imParam">col2imParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@col2im(po:org.apache.mxnet.javaapi.col2imParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Combining the output column matrix of im2col back to image array.

Like :<span class="kw">class</span>:`~mxnet.ndarray.im2col`, <span class="kw">this</span> operator is also used in the vanilla convolution
implementation. Despite the name, col2im is not the reverse operation of im2col. Since there
may be overlaps between neighbouring sliding blocks, the column elements cannot be directly
put back into image. Instead, they are accumulated (i.e., summed) in the input image
just like the gradient computation, so col2im is the gradient of im2col and vice versa.

Using the notation in im2col, given an input column array of shape
:math:`(N, C \times  \prod(\text{kernel}), W)`, <span class="kw">this</span> operator accumulates the column elements
into output array of shape :math:`(N, C, \text{output_size}[<span class="num">0</span>], \text{output_size}[<span class="num">1</span>], \dots)`.
Only <span class="num">1</span>-D, <span class="num">2</span>-D and <span class="num">3</span>-D of spatial dimension is supported in <span class="kw">this</span> operator.



Defined in src/operator/nn/im2col.cc:L181</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#concat" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="concat(data:Array[org.apache.mxnet.javaapi.NDArray],num_args:Integer,dim:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="concat(Array[NDArray],Integer,Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">concat</span><span class="params">(<span name="data">data: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>, <span name="num_args">num_args: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="dim">dim: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@concat(data:Array[org.apache.mxnet.javaapi.NDArray],num_args:Integer,dim:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Joins input arrays along a given axis.

.. note:: `Concat` is deprecated. Use `concat` instead.

The dimensions of the input arrays should be the same except the axis along
which they will be concatenated.
The dimension of the output array along the concatenated axis will be equal
to the sum of the corresponding dimensions of the input arrays.

The storage <span class="kw">type</span> of ``concat`` output depends on storage types of inputs

- concat(csr, csr, ..., csr, dim=<span class="num">0</span>) = csr
- otherwise, ``concat`` generates output <span class="kw">with</span> default storage

Example::

   x = `[ [<span class="num">1</span>,<span class="num">1</span>],[<span class="num">2</span>,<span class="num">2</span>] ]
   y = `[ [<span class="num">3</span>,<span class="num">3</span>],[<span class="num">4</span>,<span class="num">4</span>],[<span class="num">5</span>,<span class="num">5</span>] ]
   z = `[ [<span class="num">6</span>,<span class="num">6</span>], [<span class="num">7</span>,<span class="num">7</span>],[<span class="num">8</span>,<span class="num">8</span>] ]

   concat(x,y,z,dim=<span class="num">0</span>) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>],
                          [ <span class="num">2.</span>,  <span class="num">2.</span>],
                          [ <span class="num">3.</span>,  <span class="num">3.</span>],
                          [ <span class="num">4.</span>,  <span class="num">4.</span>],
                          [ <span class="num">5.</span>,  <span class="num">5.</span>],
                          [ <span class="num">6.</span>,  <span class="num">6.</span>],
                          [ <span class="num">7.</span>,  <span class="num">7.</span>],
                          [ <span class="num">8.</span>,  <span class="num">8.</span>] ]

   Note that you cannot concat x,y,z along dimension <span class="num">1</span> since dimension
   <span class="num">0</span> is not the same <span class="kw">for</span> all the input arrays.

   concat(y,z,dim=<span class="num">1</span>) = `[ [ <span class="num">3.</span>,  <span class="num">3.</span>,  <span class="num">6.</span>,  <span class="num">6.</span>],
                         [ <span class="num">4.</span>,  <span class="num">4.</span>,  <span class="num">7.</span>,  <span class="num">7.</span>],
                         [ <span class="num">5.</span>,  <span class="num">5.</span>,  <span class="num">8.</span>,  <span class="num">8.</span>] ]



Defined in src/operator/nn/concat.cc:L384</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>List of arrays to concatenate</p></dd><dt class="param">num_args</dt><dd class="cmt"><p>Number of inputs to be concated.</p></dd><dt class="param">dim</dt><dd class="cmt"><p>the dimension to be concated.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#cos" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="cos(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="cos(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">cos</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@cos(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the element-wise cosine of the input array.

The input should be in radians (:math:`<span class="num">2</span>\pi` rad equals <span class="num">360</span> degrees).

.. math::
   cos([<span class="num">0</span>, \pi/<span class="num">4</span>, \pi/<span class="num">2</span>]) = [<span class="num">1</span>, <span class="num">0.707</span>, <span class="num">0</span>]

The storage <span class="kw">type</span> of ``cos`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L90</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#cosh" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="cosh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="cosh(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">cosh</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@cosh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the hyperbolic cosine  of the input array, computed element-wise.

.. math::
   cosh(x) = <span class="num">0.5</span>\times(exp(x) + exp(-x))

The storage <span class="kw">type</span> of ``cosh`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L409</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#crop" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="crop(data:org.apache.mxnet.javaapi.NDArray,begin:org.apache.mxnet.javaapi.Shape,end:org.apache.mxnet.javaapi.Shape,step:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="crop(NDArray,Shape,Shape,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">crop</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="begin">begin: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="end">end: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="step">step: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@crop(data:org.apache.mxnet.javaapi.NDArray,begin:org.apache.mxnet.javaapi.Shape,end:org.apache.mxnet.javaapi.Shape,step:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Slices a region of the array.
.. note:: ``crop`` is deprecated. Use ``slice`` instead.
This function returns a sliced array between the indices given
by `begin` and `end` <span class="kw">with</span> the corresponding `step`.
For an input array of ``shape=(d_0, d_1, ..., d_n-<span class="num">1</span>)``,
slice operation <span class="kw">with</span> ``begin=(b_0, b_1...b_m-<span class="num">1</span>)``,
``end=(e_0, e_1, ..., e_m-<span class="num">1</span>)``, and ``step=(s_0, s_1, ..., s_m-<span class="num">1</span>)``,
where m &lt;= n, results in an array <span class="kw">with</span> the shape
``(|e_0-b_0|/|s_0|, ..., |e_m-<span class="num">1</span>-b_m-<span class="num">1</span>|/|s_m-<span class="num">1</span>|, d_m, ..., d_n-<span class="num">1</span>)``.
The resulting array's *k*-th dimension contains elements
from the *k*-th dimension of the input array starting
from index ``b_k`` (inclusive) <span class="kw">with</span> step ``s_k``
until reaching ``e_k`` (exclusive).
If the *k*-th elements are `<span class="std">None</span>` in the sequence of `begin`, `end`,
and `step`, the following rule will be used to set default values.
If `s_k` is `<span class="std">None</span>`, set `s_k=<span class="num">1</span>`. If `s_k &gt; <span class="num">0</span>`, set `b_k=<span class="num">0</span>`, `e_k=d_k`;
<span class="kw">else</span>, set `b_k=d_k-<span class="num">1</span>`, `e_k=-<span class="num">1</span>`.
The storage <span class="kw">type</span> of ``slice`` output depends on storage types of inputs
- slice(csr) = csr
- otherwise, ``slice`` generates output <span class="kw">with</span> default storage
.. note:: When input data storage <span class="kw">type</span> is csr, it only supports
   step=(), or step=(<span class="std">None</span>,), or step=(<span class="num">1</span>,) to generate a csr output.
   For other step parameter values, it falls back to slicing
   a dense tensor.
Example::
  x = `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>,   <span class="num">4.</span>],
       [  <span class="num">5.</span>,   <span class="num">6.</span>,   <span class="num">7.</span>,   <span class="num">8.</span>],
       [  <span class="num">9.</span>,  <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ]
  slice(x, begin=(<span class="num">0</span>,<span class="num">1</span>), end=(<span class="num">2</span>,<span class="num">4</span>)) = `[ [ <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>],
                                     [ <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>] ]
  slice(x, begin=(<span class="std">None</span>, <span class="num">0</span>), end=(<span class="std">None</span>, <span class="num">3</span>), step=(-<span class="num">1</span>, <span class="num">2</span>)) = `[ [<span class="num">9.</span>, <span class="num">11.</span>],
                                                            [<span class="num">5.</span>,  <span class="num">7.</span>],
                                                            [<span class="num">1.</span>,  <span class="num">3.</span>] ]


Defined in src/operator/tensor/matrix_op.cc:L481</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Source input</p></dd><dt class="param">begin</dt><dd class="cmt"><p>starting indices for the slice operation, supports negative indices.</p></dd><dt class="param">end</dt><dd class="cmt"><p>ending indices for the slice operation, supports negative indices.</p></dd><dt class="param">step</dt><dd class="cmt"><p>step for the slice operation, supports negative values.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#ctc_loss" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="ctc_loss(po:org.apache.mxnet.javaapi.ctc_lossParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="ctc_loss(ctc_lossParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">ctc_loss</span><span class="params">(<span name="po">po: <a href="ctc_lossParam.html" class="extype" name="org.apache.mxnet.javaapi.ctc_lossParam">ctc_lossParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@ctc_loss(po:org.apache.mxnet.javaapi.ctc_lossParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Connectionist Temporal Classification Loss.

.. note:: The existing alias ``contrib_CTCLoss`` is deprecated.

The shapes of the inputs and outputs:

- **data**: `(sequence_length, batch_size, alphabet_size)`
- **label**: `(batch_size, label_sequence_length)`
- **out**: `(batch_size)`

The `data` tensor consists of sequences of activation vectors (without applying softmax),
<span class="kw">with</span> i-th channel in the last dimension corresponding to i-th label
<span class="kw">for</span> i between <span class="num">0</span> and alphabet_size-<span class="num">1</span> (i.e always <span class="num">0</span>-indexed).
Alphabet size should include one additional value reserved <span class="kw">for</span> blank label.
When `blank_label` is ``<span class="lit">"first"</span>``, the ``<span class="num">0</span>``-th channel is be reserved <span class="kw">for</span>
activation of blank label, or otherwise <span class="kw">if</span> it is <span class="lit">"last"</span>, ``(alphabet_size-<span class="num">1</span>)``-th channel should be
reserved <span class="kw">for</span> blank label.

``label`` is an index matrix of integers. When `blank_label` is ``<span class="lit">"first"</span>``,
the value <span class="num">0</span> is then reserved <span class="kw">for</span> blank label, and should not be passed in <span class="kw">this</span> matrix. Otherwise,
when `blank_label` is ``<span class="lit">"last"</span>``, the value `(alphabet_size-<span class="num">1</span>)` is reserved <span class="kw">for</span> blank label.

If a sequence of labels is shorter than *label_sequence_length*, use the special
padding value at the end of the sequence to conform it to the correct
length. The padding value is `<span class="num">0</span>` when `blank_label` is ``<span class="lit">"first"</span>``, and `-<span class="num">1</span>` otherwise.

For example, suppose the vocabulary is `[a, b, c]`, and in one batch we have three sequences
<span class="lit">'ba'</span>, <span class="lit">'cbb'</span>, and <span class="lit">'abac'</span>. When `blank_label` is ``<span class="lit">"first"</span>``, we can index the labels as
`{<span class="lit">'a'</span>: <span class="num">1</span>, <span class="lit">'b'</span>: <span class="num">2</span>, <span class="lit">'c'</span>: <span class="num">3</span>}`, and we reserve the <span class="num">0</span>-th channel <span class="kw">for</span> blank label in data tensor.
The resulting `label` tensor should be padded to be::

  `[ [<span class="num">2</span>, <span class="num">1</span>, <span class="num">0</span>, <span class="num">0</span>], [<span class="num">3</span>, <span class="num">2</span>, <span class="num">2</span>, <span class="num">0</span>], [<span class="num">1</span>, <span class="num">2</span>, <span class="num">1</span>, <span class="num">3</span>] ]

When `blank_label` is ``<span class="lit">"last"</span>``, we can index the labels as
`{<span class="lit">'a'</span>: <span class="num">0</span>, <span class="lit">'b'</span>: <span class="num">1</span>, <span class="lit">'c'</span>: <span class="num">2</span>}`, and we reserve the channel index <span class="num">3</span> <span class="kw">for</span> blank label in data tensor.
The resulting `label` tensor should be padded to be::

  `[ [<span class="num">1</span>, <span class="num">0</span>, -<span class="num">1</span>, -<span class="num">1</span>], [<span class="num">2</span>, <span class="num">1</span>, <span class="num">1</span>, -<span class="num">1</span>], [<span class="num">0</span>, <span class="num">1</span>, <span class="num">0</span>, <span class="num">2</span>] ]

``out`` is a list of CTC loss values, one per example in the batch.

See *Connectionist Temporal Classification: Labelling Unsegmented
Sequence Data <span class="kw">with</span> Recurrent Neural Networks*, A. Graves *et al*. <span class="kw">for</span> more
information on the definition and the algorithm.



Defined in src/operator/nn/ctc_loss.cc:L100</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#cumsum" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="cumsum(po:org.apache.mxnet.javaapi.cumsumParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="cumsum(cumsumParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">cumsum</span><span class="params">(<span name="po">po: <a href="cumsumParam.html" class="extype" name="org.apache.mxnet.javaapi.cumsumParam">cumsumParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@cumsum(po:org.apache.mxnet.javaapi.cumsumParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Return the cumulative sum of the elements along a given axis.

Defined in src/operator/numpy/np_cumsum.cc:L70</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#degrees" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="degrees(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="degrees(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">degrees</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@degrees(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Converts each element of the input array from radians to degrees.

.. math::
   degrees([<span class="num">0</span>, \pi/<span class="num">2</span>, \pi, <span class="num">3</span>\pi/<span class="num">2</span>, <span class="num">2</span>\pi]) = [<span class="num">0</span>, <span class="num">90</span>, <span class="num">180</span>, <span class="num">270</span>, <span class="num">360</span>]

The storage <span class="kw">type</span> of ``degrees`` output depends upon the input storage <span class="kw">type</span>:

   - degrees(default) = default
   - degrees(row_sparse) = row_sparse
   - degrees(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L332</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#depth_to_space" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="depth_to_space(data:org.apache.mxnet.javaapi.NDArray,block_size:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="depth_to_space(NDArray,Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">depth_to_space</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="block_size">block_size: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@depth_to_space(data:org.apache.mxnet.javaapi.NDArray,block_size:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Rearranges(permutes) data from depth into blocks of spatial data.
Similar to ONNX DepthToSpace operator:
https:<span class="cmt">//github.com/onnx/onnx/blob/master/docs/Operators.md#DepthToSpace.</span>
The output is a <span class="kw">new</span> tensor where the values from depth dimension are moved in spatial blocks
to height and width dimension. The reverse of <span class="kw">this</span> operation is ``space_to_depth``.
.. math::
    \begin{gather*}
    x \prime = reshape(x, [N, block\_size, block\_size, C / (block\_size ^ <span class="num">2</span>), H * block\_size, W * block\_size]) \\
    x \prime \prime = transpose(x \prime, [<span class="num">0</span>, <span class="num">3</span>, <span class="num">4</span>, <span class="num">1</span>, <span class="num">5</span>, <span class="num">2</span>]) \\
    y = reshape(x \prime \prime, [N, C / (block\_size ^ <span class="num">2</span>), H * block\_size, W * block\_size])
    \end{gather*}
where :math:`x` is an input tensor <span class="kw">with</span> default layout as :math:`[N, C, H, W]`: [batch, channels, height, width]
and :math:`y` is the output tensor of layout :math:`[N, C / (block\_size ^ <span class="num">2</span>), H * block\_size, W * block\_size]`
Example::
  x = `[ [`[ [<span class="num">0</span>, <span class="num">1</span>, <span class="num">2</span>],
         [<span class="num">3</span>, <span class="num">4</span>, <span class="num">5</span>] ],
        `[ [<span class="num">6</span>, <span class="num">7</span>, <span class="num">8</span>],
         [<span class="num">9</span>, <span class="num">10</span>, <span class="num">11</span>] ],
        `[ [<span class="num">12</span>, <span class="num">13</span>, <span class="num">14</span>],
         [<span class="num">15</span>, <span class="num">16</span>, <span class="num">17</span>] ],
        `[ [<span class="num">18</span>, <span class="num">19</span>, <span class="num">20</span>],
         [<span class="num">21</span>, <span class="num">22</span>, <span class="num">23</span>] ] ] ]
  depth_to_space(x, <span class="num">2</span>) = `[ [`[ [<span class="num">0</span>, <span class="num">6</span>, <span class="num">1</span>, <span class="num">7</span>, <span class="num">2</span>, <span class="num">8</span>],
                            [<span class="num">12</span>, <span class="num">18</span>, <span class="num">13</span>, <span class="num">19</span>, <span class="num">14</span>, <span class="num">20</span>],
                            [<span class="num">3</span>, <span class="num">9</span>, <span class="num">4</span>, <span class="num">10</span>, <span class="num">5</span>, <span class="num">11</span>],
                            [<span class="num">15</span>, <span class="num">21</span>, <span class="num">16</span>, <span class="num">22</span>, <span class="num">17</span>, <span class="num">23</span>] ] ] ]


Defined in src/operator/tensor/matrix_op.cc:L971</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input ndarray</p></dd><dt class="param">block_size</dt><dd class="cmt"><p>Blocks of [block_size. block_size] are moved</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#diag" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="diag(po:org.apache.mxnet.javaapi.diagParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="diag(diagParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">diag</span><span class="params">(<span name="po">po: <a href="diagParam.html" class="extype" name="org.apache.mxnet.javaapi.diagParam">diagParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@diag(po:org.apache.mxnet.javaapi.diagParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Extracts a diagonal or constructs a diagonal array.

``diag``'s behavior depends on the input array dimensions:

- <span class="num">1</span>-D arrays: constructs a <span class="num">2</span>-D array <span class="kw">with</span> the input as its diagonal, all other elements are zero.
- N-D arrays: extracts the diagonals of the sub-arrays <span class="kw">with</span> axes specified by ``axis1`` and ``axis2``.
  The output shape would be decided by removing the axes numbered ``axis1`` and ``axis2`` from the
  input shape and appending to the result a <span class="kw">new</span> axis <span class="kw">with</span> the size of the diagonals in question.

  For example, when the input shape is `(<span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>, <span class="num">5</span>)`, ``axis1`` and ``axis2`` are <span class="num">0</span> and <span class="num">2</span>
  respectively and ``k`` is <span class="num">0</span>, the resulting shape would be `(<span class="num">3</span>, <span class="num">5</span>, <span class="num">2</span>)`.

Examples::

  x = `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>],
       [<span class="num">4</span>, <span class="num">5</span>, <span class="num">6</span>] ]

  diag(x) = [<span class="num">1</span>, <span class="num">5</span>]

  diag(x, k=<span class="num">1</span>) = [<span class="num">2</span>, <span class="num">6</span>]

  diag(x, k=-<span class="num">1</span>) = [<span class="num">4</span>]

  x = [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>]

  diag(x) = `[ [<span class="num">1</span>, <span class="num">0</span>, <span class="num">0</span>],
             [<span class="num">0</span>, <span class="num">2</span>, <span class="num">0</span>],
             [<span class="num">0</span>, <span class="num">0</span>, <span class="num">3</span>] ]

  diag(x, k=<span class="num">1</span>) = `[ [<span class="num">0</span>, <span class="num">1</span>, <span class="num">0</span>],
                  [<span class="num">0</span>, <span class="num">0</span>, <span class="num">2</span>],
                  [<span class="num">0</span>, <span class="num">0</span>, <span class="num">0</span>] ]

  diag(x, k=-<span class="num">1</span>) = `[ [<span class="num">0</span>, <span class="num">0</span>, <span class="num">0</span>],
                   [<span class="num">1</span>, <span class="num">0</span>, <span class="num">0</span>],
                   [<span class="num">0</span>, <span class="num">2</span>, <span class="num">0</span>] ]

  x = `[ `[ [<span class="num">1</span>, <span class="num">2</span>],
        [<span class="num">3</span>, <span class="num">4</span>] ],

       `[ [<span class="num">5</span>, <span class="num">6</span>],
        [<span class="num">7</span>, <span class="num">8</span>] ] ]

  diag(x) = `[ [<span class="num">1</span>, <span class="num">7</span>],
             [<span class="num">2</span>, <span class="num">8</span>] ]

  diag(x, k=<span class="num">1</span>) = `[ [<span class="num">3</span>],
                  [<span class="num">4</span>] ]

  diag(x, axis1=-<span class="num">2</span>, axis2=-<span class="num">1</span>) = `[ [<span class="num">1</span>, <span class="num">4</span>],
                                 [<span class="num">5</span>, <span class="num">8</span>] ]



Defined in src/operator/tensor/diag_op.cc:L86</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#dot" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="dot(po:org.apache.mxnet.javaapi.dotParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="dot(dotParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">dot</span><span class="params">(<span name="po">po: <a href="dotParam.html" class="extype" name="org.apache.mxnet.javaapi.dotParam">dotParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@dot(po:org.apache.mxnet.javaapi.dotParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Dot product of two arrays.

``dot``'s behavior depends on the input array dimensions:

- <span class="num">1</span>-D arrays: inner product of vectors
- <span class="num">2</span>-D arrays: matrix multiplication
- N-D arrays: a sum product over the last axis of the first input and the first
  axis of the second input

  For example, given <span class="num">3</span>-D ``x`` <span class="kw">with</span> shape `(n,m,k)` and ``y`` <span class="kw">with</span> shape `(k,r,s)`, the
  result array will have shape `(n,m,r,s)`. It is computed by::

    dot(x,y)[i,j,a,b] = sum(x[i,j,:]*y[:,a,b])

  Example::

    x = reshape([<span class="num">0</span>,<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>,<span class="num">5</span>,<span class="num">6</span>,<span class="num">7</span>], shape=(<span class="num">2</span>,<span class="num">2</span>,<span class="num">2</span>))
    y = reshape([<span class="num">7</span>,<span class="num">6</span>,<span class="num">5</span>,<span class="num">4</span>,<span class="num">3</span>,<span class="num">2</span>,<span class="num">1</span>,<span class="num">0</span>], shape=(<span class="num">2</span>,<span class="num">2</span>,<span class="num">2</span>))
    dot(x,y)[<span class="num">0</span>,<span class="num">0</span>,<span class="num">1</span>,<span class="num">1</span>] = <span class="num">0</span>
    sum(x[<span class="num">0</span>,<span class="num">0</span>,:]*y[:,<span class="num">1</span>,<span class="num">1</span>]) = <span class="num">0</span>

The storage <span class="kw">type</span> of ``dot`` output depends on storage types of inputs, transpose option and
forward_stype option <span class="kw">for</span> output storage <span class="kw">type</span>. Implemented sparse operations include:

- dot(default, default, transpose_a=True/False, transpose_b=True/False) = default
- dot(csr, default, transpose_a=True) = default
- dot(csr, default, transpose_a=True) = row_sparse
- dot(csr, default) = default
- dot(csr, row_sparse) = default
- dot(default, csr) = csr (CPU only)
- dot(default, csr, forward_stype='default') = default
- dot(default, csr, transpose_b=True, forward_stype='default') = default

If the combination of input storage types and forward_stype does not <span class="kw">match</span> any of the
above patterns, ``dot`` will fallback and generate output <span class="kw">with</span> default storage.

.. Note::

    If the storage <span class="kw">type</span> of the lhs is <span class="lit">"csr"</span>, the storage <span class="kw">type</span> of gradient w.r.t rhs will be
    <span class="lit">"row_sparse"</span>. Only a subset of optimizers support sparse gradients, including SGD, AdaGrad
    and Adam. Note that by default <span class="kw">lazy</span> updates is turned on, which may perform differently
    from standard updates. For more details, please check the Optimization API at:
    https:<span class="cmt">//mxnet.incubator.apache.org/api/python/optimization/optimization.html</span>



Defined in src/operator/tensor/dot.cc:L77</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#elemwise_add" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="elemwise_add(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="elemwise_add(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">elemwise_add</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@elemwise_add(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Adds arguments element-wise.

The storage <span class="kw">type</span> of ``elemwise_add`` output depends on storage types of inputs

   - elemwise_add(row_sparse, row_sparse) = row_sparse
   - elemwise_add(csr, csr) = csr
   - elemwise_add(default, csr) = default
   - elemwise_add(csr, default) = default
   - elemwise_add(default, rsp) = default
   - elemwise_add(rsp, default) = default
   - otherwise, ``elemwise_add`` generates output <span class="kw">with</span> default storage</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>first input</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>second input</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#elemwise_div" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="elemwise_div(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="elemwise_div(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">elemwise_div</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@elemwise_div(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Divides arguments element-wise.

The storage <span class="kw">type</span> of ``elemwise_div`` output is always dense</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>first input</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>second input</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#elemwise_mul" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="elemwise_mul(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="elemwise_mul(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">elemwise_mul</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@elemwise_mul(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Multiplies arguments element-wise.

The storage <span class="kw">type</span> of ``elemwise_mul`` output depends on storage types of inputs

   - elemwise_mul(default, default) = default
   - elemwise_mul(row_sparse, row_sparse) = row_sparse
   - elemwise_mul(default, row_sparse) = row_sparse
   - elemwise_mul(row_sparse, default) = row_sparse
   - elemwise_mul(csr, csr) = csr
   - otherwise, ``elemwise_mul`` generates output <span class="kw">with</span> default storage</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>first input</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>second input</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#elemwise_sub" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="elemwise_sub(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="elemwise_sub(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">elemwise_sub</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@elemwise_sub(lhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Subtracts arguments element-wise.

The storage <span class="kw">type</span> of ``elemwise_sub`` output depends on storage types of inputs

   - elemwise_sub(row_sparse, row_sparse) = row_sparse
   - elemwise_sub(csr, csr) = csr
   - elemwise_sub(default, csr) = default
   - elemwise_sub(csr, default) = default
   - elemwise_sub(default, rsp) = default
   - elemwise_sub(rsp, default) = default
   - otherwise, ``elemwise_sub`` generates output <span class="kw">with</span> default storage</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>first input</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>second input</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#erf" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="erf(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="erf(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">erf</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@erf(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise gauss error function of the input.

Example::

   erf([<span class="num">0</span>, -<span class="num">1.</span>, <span class="num">10.</span>]) = [<span class="num">0.</span>, -<span class="num">0.8427</span>, <span class="num">1.</span>]



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L886</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#erfinv" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="erfinv(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="erfinv(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">erfinv</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@erfinv(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise inverse gauss error function of the input.

Example::

   erfinv([<span class="num">0</span>, <span class="num">0.5</span>., -<span class="num">1.</span>]) = [<span class="num">0.</span>, <span class="num">0.4769</span>, -inf]



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L908</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#exp" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="exp(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="exp(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">exp</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@exp(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise exponential value of the input.

.. math::
   exp(x) = e^x \approx <span class="num">2.718</span>^x

Example::

   exp([<span class="num">0</span>, <span class="num">1</span>, <span class="num">2</span>]) = [<span class="num">1.</span>, <span class="num">2.71828175</span>, <span class="num">7.38905621</span>]

The storage <span class="kw">type</span> of ``exp`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_logexp.cc:L64</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#expand_dims" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="expand_dims(data:org.apache.mxnet.javaapi.NDArray,axis:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="expand_dims(NDArray,Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">expand_dims</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="axis">axis: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@expand_dims(data:org.apache.mxnet.javaapi.NDArray,axis:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Inserts a <span class="kw">new</span> axis of size <span class="num">1</span> into the array shape
For example, given ``x`` <span class="kw">with</span> shape ``(<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>)``, then ``expand_dims(x, axis=<span class="num">1</span>)``
will <span class="kw">return</span> a <span class="kw">new</span> array <span class="kw">with</span> shape ``(<span class="num">2</span>,<span class="num">1</span>,<span class="num">3</span>,<span class="num">4</span>)``.


Defined in src/operator/tensor/matrix_op.cc:L394</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Source input</p></dd><dt class="param">axis</dt><dd class="cmt"><p>Position where new axis is to be inserted. Suppose that the input <code>NDArray</code>'s dimension is <code>ndim</code>, the range of the inserted axis is <code>[-ndim, ndim]</code></p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#expm1" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="expm1(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="expm1(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">expm1</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@expm1(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns ``exp(x) - <span class="num">1</span>`` computed element-wise on the input.

This function provides greater precision than ``exp(x) - <span class="num">1</span>`` <span class="kw">for</span> small values of ``x``.

The storage <span class="kw">type</span> of ``expm1`` output depends upon the input storage <span class="kw">type</span>:

   - expm1(default) = default
   - expm1(row_sparse) = row_sparse
   - expm1(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_logexp.cc:L244</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#fill_element_0index" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="fill_element_0index(lhs:org.apache.mxnet.javaapi.NDArray,mhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="fill_element_0index(NDArray,NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">fill_element_0index</span><span class="params">(<span name="lhs">lhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="mhs">mhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="rhs">rhs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@fill_element_0index(lhs:org.apache.mxnet.javaapi.NDArray,mhs:org.apache.mxnet.javaapi.NDArray,rhs:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Fill one element of each line(row <span class="kw">for</span> python, column <span class="kw">for</span> R/Julia) in lhs according to index indicated by rhs and values indicated by mhs. This function assume rhs uses <span class="num">0</span>-based index.</pre></div><dl class="paramcmts block"><dt class="param">lhs</dt><dd class="cmt"><p>Left operand to the function.</p></dd><dt class="param">mhs</dt><dd class="cmt"><p>Middle operand to the function.</p></dd><dt class="param">rhs</dt><dd class="cmt"><p>Right operand to the function.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#fix" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="fix(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="fix(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">fix</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@fix(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise rounded value to the nearest \
integer towards zero of the input.

Example::

   fix([-<span class="num">2.1</span>, -<span class="num">1.9</span>, <span class="num">1.9</span>, <span class="num">2.1</span>]) = [-<span class="num">2.</span>, -<span class="num">1.</span>,  <span class="num">1.</span>, <span class="num">2.</span>]

The storage <span class="kw">type</span> of ``fix`` output depends upon the input storage <span class="kw">type</span>:

   - fix(default) = default
   - fix(row_sparse) = row_sparse
   - fix(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L874</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#flatten" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="flatten(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="flatten(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">flatten</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@flatten(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Flattens the input array into a <span class="num">2</span>-D array by collapsing the higher dimensions.
.. note:: `Flatten` is deprecated. Use `flatten` instead.
For an input array <span class="kw">with</span> shape ``(d1, d2, ..., dk)``, `flatten` operation reshapes
the input array into an output array of shape ``(d1, d2*...*dk)``.
Note that the behavior of <span class="kw">this</span> function is different from numpy.ndarray.flatten,
which behaves similar to mxnet.ndarray.reshape((-<span class="num">1</span>,)).
Example::
    x = `[ [
        [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>],
        [<span class="num">4</span>,<span class="num">5</span>,<span class="num">6</span>],
        [<span class="num">7</span>,<span class="num">8</span>,<span class="num">9</span>]
    ],
    [    [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>],
        [<span class="num">4</span>,<span class="num">5</span>,<span class="num">6</span>],
        [<span class="num">7</span>,<span class="num">8</span>,<span class="num">9</span>]
    ] ],
    flatten(x) = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>,  <span class="num">9.</span>],
       [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>,  <span class="num">9.</span>] ]


Defined in src/operator/tensor/matrix_op.cc:L249</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#flip" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="flip(data:org.apache.mxnet.javaapi.NDArray,axis:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="flip(NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">flip</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="axis">axis: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@flip(data:org.apache.mxnet.javaapi.NDArray,axis:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Reverses the order of elements along given axis <span class="kw">while</span> preserving array shape.
Note: reverse and flip are equivalent. We use reverse in the following examples.
Examples::
  x = `[ [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>],
       [ <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>,  <span class="num">9.</span>] ]
  reverse(x, axis=<span class="num">0</span>) = `[ [ <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>,  <span class="num">9.</span>],
                        [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>] ]
  reverse(x, axis=<span class="num">1</span>) = `[ [ <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>],
                        [ <span class="num">9.</span>,  <span class="num">8.</span>,  <span class="num">7.</span>,  <span class="num">6.</span>,  <span class="num">5.</span>] ]


Defined in src/operator/tensor/matrix_op.cc:L831</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data array</p></dd><dt class="param">axis</dt><dd class="cmt"><p>The axis which to reverse elements.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#floor" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="floor(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="floor(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">floor</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@floor(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise floor of the input.

The floor of the scalar x is the largest integer i, such that i &lt;= x.

Example::

   floor([-<span class="num">2.1</span>, -<span class="num">1.9</span>, <span class="num">1.5</span>, <span class="num">1.9</span>, <span class="num">2.1</span>]) = [-<span class="num">3.</span>, -<span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>]

The storage <span class="kw">type</span> of ``floor`` output depends upon the input storage <span class="kw">type</span>:

   - floor(default) = default
   - floor(row_sparse) = row_sparse
   - floor(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L836</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#ftml_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="ftml_update(po:org.apache.mxnet.javaapi.ftml_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="ftml_update(ftml_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">ftml_update</span><span class="params">(<span name="po">po: <a href="ftml_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.ftml_updateParam">ftml_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@ftml_update(po:org.apache.mxnet.javaapi.ftml_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>The FTML optimizer described in
*FTML - Follow the Moving Leader in Deep Learning*,
available at http:<span class="cmt">//proceedings.mlr.press/v70/zheng17a/zheng17a.pdf.</span>

.. math::

 g_t = \nabla J(W_{t-<span class="num">1</span>})\\
 v_t = \beta_2 v_{t-<span class="num">1</span>} + (<span class="num">1</span> - \beta_2) g_t^<span class="num">2</span>\\
 d_t = \frac{ <span class="num">1</span> - \beta_1^t }{ \eta_t } (\sqrt{ \frac{ v_t }{ <span class="num">1</span> - \beta_2^t } } + \epsilon)
 \sigma_t = d_t - \beta_1 d_{t-<span class="num">1</span>}
 z_t = \beta_1 z_{ t-<span class="num">1</span> } + (<span class="num">1</span> - \beta_1^t) g_t - \sigma_t W_{t-<span class="num">1</span>}
 W_t = - \frac{ z_t }{ d_t }



Defined in src/operator/optimizer_op.cc:L639</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#ftrl_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="ftrl_update(po:org.apache.mxnet.javaapi.ftrl_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="ftrl_update(ftrl_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">ftrl_update</span><span class="params">(<span name="po">po: <a href="ftrl_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.ftrl_updateParam">ftrl_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@ftrl_update(po:org.apache.mxnet.javaapi.ftrl_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> Ftrl optimizer.
Referenced from *Ad Click Prediction: a View from the Trenches*, available at
http:<span class="cmt">//dl.acm.org/citation.cfm?id=2488200.</span>

It updates the weights using::

 rescaled_grad = clip(grad * rescale_grad, clip_gradient)
 z += rescaled_grad - (sqrt(n + rescaled_grad**<span class="num">2</span>) - sqrt(n)) * weight / learning_rate
 n += rescaled_grad**<span class="num">2</span>
 w = (sign(z) * lamda1 - z) / ((beta + sqrt(n)) / learning_rate + wd) * (abs(z) &gt; lamda1)

If w, z and n are all of ``row_sparse`` storage <span class="kw">type</span>,
only the row slices whose indices appear in grad.indices are updated (<span class="kw">for</span> w, z and n)::

 <span class="kw">for</span> row in grad.indices:
     rescaled_grad[row] = clip(grad[row] * rescale_grad, clip_gradient)
     z[row] += rescaled_grad[row] - (sqrt(n[row] + rescaled_grad[row]**<span class="num">2</span>) - sqrt(n[row])) * weight[row] / learning_rate
     n[row] += rescaled_grad[row]**<span class="num">2</span>
     w[row] = (sign(z[row]) * lamda1 - z[row]) / ((beta + sqrt(n[row])) / learning_rate + wd) * (abs(z[row]) &gt; lamda1)



Defined in src/operator/optimizer_op.cc:L875</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#gamma" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="gamma(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="gamma(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">gamma</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@gamma(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the gamma function (extension of the factorial function \
to the reals), computed element-wise on the input array.

The storage <span class="kw">type</span> of ``gamma`` output is always dense</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#gammaln" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="gammaln(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="gammaln(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">gammaln</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@gammaln(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise log of the absolute value of the gamma function \
of the input.

The storage <span class="kw">type</span> of ``gammaln`` output is always dense</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#gather_nd" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="gather_nd(data:org.apache.mxnet.javaapi.NDArray,indices:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="gather_nd(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">gather_nd</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="indices">indices: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@gather_nd(data:org.apache.mxnet.javaapi.NDArray,indices:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Gather elements or slices from `data` and store to a tensor whose
shape is defined by `indices`.

Given `data` <span class="kw">with</span> shape `(X_0, X_1, ..., X_{N-<span class="num">1</span>})` and indices <span class="kw">with</span> shape
`(M, Y_0, ..., Y_{K-<span class="num">1</span>})`, the output will have shape `(Y_0, ..., Y_{K-<span class="num">1</span>}, X_M, ..., X_{N-<span class="num">1</span>})`,
where `M &lt;= N`. If `M == N`, output shape will simply be `(Y_0, ..., Y_{K-<span class="num">1</span>})`.

The elements in output is defined as follows::

  output[y_0, ..., y_{K-<span class="num">1</span>}, x_M, ..., x_{N-<span class="num">1</span>}] = data[indices[<span class="num">0</span>, y_0, ..., y_{K-<span class="num">1</span>}],
                                                      ...,
                                                      indices[M-<span class="num">1</span>, y_0, ..., y_{K-<span class="num">1</span>}],
                                                      x_M, ..., x_{N-<span class="num">1</span>}]

Examples::

  data = `[ [<span class="num">0</span>, <span class="num">1</span>], [<span class="num">2</span>, <span class="num">3</span>] ]
  indices = `[ [<span class="num">1</span>, <span class="num">1</span>, <span class="num">0</span>], [<span class="num">0</span>, <span class="num">1</span>, <span class="num">0</span>] ]
  gather_nd(data, indices) = [<span class="num">2</span>, <span class="num">3</span>, <span class="num">0</span>]

  data = `[ `[ [<span class="num">1</span>, <span class="num">2</span>], [<span class="num">3</span>, <span class="num">4</span>] ], `[ [<span class="num">5</span>, <span class="num">6</span>], [<span class="num">7</span>, <span class="num">8</span>] ] ]
  indices = `[ [<span class="num">0</span>, <span class="num">1</span>], [<span class="num">1</span>, <span class="num">0</span>] ]
  gather_nd(data, indices) = `[ [<span class="num">3</span>, <span class="num">4</span>], [<span class="num">5</span>, <span class="num">6</span>] ]</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>data</p></dd><dt class="param">indices</dt><dd class="cmt"><p>indices</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#hard_sigmoid" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="hard_sigmoid(po:org.apache.mxnet.javaapi.hard_sigmoidParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="hard_sigmoid(hard_sigmoidParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">hard_sigmoid</span><span class="params">(<span name="po">po: <a href="hard_sigmoidParam.html" class="extype" name="org.apache.mxnet.javaapi.hard_sigmoidParam">hard_sigmoidParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@hard_sigmoid(po:org.apache.mxnet.javaapi.hard_sigmoidParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes hard sigmoid of x element-wise.

.. math::
   y = max(<span class="num">0</span>, min(<span class="num">1</span>, alpha * x + beta))



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L161</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#identity" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="identity(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="identity(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">identity</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@identity(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns a copy of the input.

From:src/operator/tensor/elemwise_unary_op_basic.cc:<span class="num">244</span></pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#im2col" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="im2col(po:org.apache.mxnet.javaapi.im2colParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="im2col(im2colParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">im2col</span><span class="params">(<span name="po">po: <a href="im2colParam.html" class="extype" name="org.apache.mxnet.javaapi.im2colParam">im2colParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@im2col(po:org.apache.mxnet.javaapi.im2colParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Extract sliding blocks from input array.

This operator is used in vanilla convolution implementation to transform the sliding
blocks on image to column matrix, then the convolution operation can be computed
by matrix multiplication between column and convolution weight. Due to the close
relation between im2col and convolution, the concept of **kernel**, **stride**,
**dilate** and **pad** in <span class="kw">this</span> operator are inherited from convolution operation.

Given the input data of shape :math:`(N, C, *)`, where :math:`N` is the batch size,
:math:`C` is the channel size, and :math:`*` is the arbitrary spatial dimension,
the output column array is always <span class="kw">with</span> shape :math:`(N, C \times \prod(\text{kernel}), W)`,
where :math:`C \times \prod(\text{kernel})` is the block size, and :math:`W` is the
block number which is the spatial size of the convolution output <span class="kw">with</span> same input parameters.
Only <span class="num">1</span>-D, <span class="num">2</span>-D and <span class="num">3</span>-D of spatial dimension is supported in <span class="kw">this</span> operator.



Defined in src/operator/nn/im2col.cc:L99</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#khatri_rao" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="khatri_rao(args:Array[org.apache.mxnet.javaapi.NDArray],out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="khatri_rao(Array[NDArray],NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">khatri_rao</span><span class="params">(<span name="args">args: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@khatri_rao(args:Array[org.apache.mxnet.javaapi.NDArray],out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the Khatri-Rao product of the input matrices.

Given a collection of :math:`n` input matrices,

.. math::
   A_1 \in \mathbb{R}^{M_1 \times M}, \ldots, A_n \in \mathbb{R}^{M_n \times N},

the (column-wise) Khatri-Rao product is defined as the matrix,

.. math::
   X = A_1 \otimes \cdots \otimes A_n \in \mathbb{R}^{(M_1 \cdots M_n) \times N},

where the :math:`k` th column is equal to the column-wise outer product
:math:`{A_1}_k \otimes \cdots \otimes {A_n}_k` where :math:`{A_i}_k` is the kth
column of the ith matrix.

Example::

  &gt;&gt;&gt; A = mx.nd.array(`[ [<span class="num">1</span>, -<span class="num">1</span>],
  &gt;&gt;&gt;                  [<span class="num">2</span>, -<span class="num">3</span>] ])
  &gt;&gt;&gt; B = mx.nd.array(`[ [<span class="num">1</span>, <span class="num">4</span>],
  &gt;&gt;&gt;                  [<span class="num">2</span>, <span class="num">5</span>],
  &gt;&gt;&gt;                  [<span class="num">3</span>, <span class="num">6</span>] ])
  &gt;&gt;&gt; C = mx.nd.khatri_rao(A, B)
  &gt;&gt;&gt; print(C.asnumpy())
  `[ [  <span class="num">1.</span>  -<span class="num">4.</span>]
   [  <span class="num">2.</span>  -<span class="num">5.</span>]
   [  <span class="num">3.</span>  -<span class="num">6.</span>]
   [  <span class="num">2.</span> -<span class="num">12.</span>]
   [  <span class="num">4.</span> -<span class="num">15.</span>]
   [  <span class="num">6.</span> -<span class="num">18.</span>] ]



Defined in src/operator/contrib/krprod.cc:L108</pre></div><dl class="paramcmts block"><dt class="param">args</dt><dd class="cmt"><p>Positional input matrices</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#lamb_update_phase1" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="lamb_update_phase1(po:org.apache.mxnet.javaapi.lamb_update_phase1Param):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="lamb_update_phase1(lamb_update_phase1Param):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">lamb_update_phase1</span><span class="params">(<span name="po">po: <a href="lamb_update_phase1Param.html" class="extype" name="org.apache.mxnet.javaapi.lamb_update_phase1Param">lamb_update_phase1Param</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@lamb_update_phase1(po:org.apache.mxnet.javaapi.lamb_update_phase1Param):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Phase I of lamb update it performs the following operations and returns g:.

Link to paper: https:<span class="cmt">//arxiv.org/pdf/1904.00962.pdf</span>

.. math::
    \begin{gather*}
    grad = grad * rescale_grad
    <span class="kw">if</span> (grad &lt; -clip_gradient)
    then
         grad = -clip_gradient
    <span class="kw">if</span> (grad &gt; clip_gradient)
    then
         grad = clip_gradient

    mean = beta1 * mean + (<span class="num">1</span> - beta1) * grad;
    variance = beta2 * variance + (<span class="num">1.</span> - beta2) * grad ^ <span class="num">2</span>;

    <span class="kw">if</span> (bias_correction)
    then
         mean_hat = mean / (<span class="num">1.</span> - beta1^t);
         var_hat = <span class="kw">var</span> / (<span class="num">1</span> - beta2^t);
         g = mean_hat / (var_hat^(<span class="num">1</span>/<span class="num">2</span>) + epsilon) + wd * weight;
    <span class="kw">else</span>
         g = mean / (var_data^(<span class="num">1</span>/<span class="num">2</span>) + epsilon) + wd * weight;
    \end{gather*}



Defined in src/operator/optimizer_op.cc:L952</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#lamb_update_phase2" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="lamb_update_phase2(po:org.apache.mxnet.javaapi.lamb_update_phase2Param):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="lamb_update_phase2(lamb_update_phase2Param):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">lamb_update_phase2</span><span class="params">(<span name="po">po: <a href="lamb_update_phase2Param.html" class="extype" name="org.apache.mxnet.javaapi.lamb_update_phase2Param">lamb_update_phase2Param</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@lamb_update_phase2(po:org.apache.mxnet.javaapi.lamb_update_phase2Param):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Phase II of lamb update it performs the following operations and updates grad.

Link to paper: https:<span class="cmt">//arxiv.org/pdf/1904.00962.pdf</span>

.. math::
    \begin{gather*}
    <span class="kw">if</span> (lower_bound &gt;= <span class="num">0</span>)
    then
         r1 = max(r1, lower_bound)
    <span class="kw">if</span> (upper_bound &gt;= <span class="num">0</span>)
    then
         r1 = max(r1, upper_bound)

    <span class="kw">if</span> (r1 == <span class="num">0</span> or r2 == <span class="num">0</span>)
    then
         lr = lr
    <span class="kw">else</span>
         lr = lr * (r1/r2)
    weight = weight - lr * g
    \end{gather*}



Defined in src/operator/optimizer_op.cc:L991</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_det" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_det(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_det(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_det</span><span class="params">(<span name="A">A: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_det(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Compute the determinant of a matrix.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, *A* is a square matrix. We compute:

  *out* = *det(A)*

If *n&gt;<span class="num">2</span>*, *det* is performed separately on the trailing two dimensions
<span class="kw">for</span> all inputs (batch mode).

.. note:: The operator supports float32 and float64 data types only.
.. note:: There is no gradient backwarded when A is non-invertible (which is
          equivalent to det(A) = <span class="num">0</span>) because zero is rarely hit upon in float
          point computation and the Jacobi's formula on determinant gradient
          is not computationally efficient when A is non-invertible.

Examples::

   Single matrix determinant
   A = `[ [<span class="num">1.</span>, <span class="num">4.</span>], [<span class="num">2.</span>, <span class="num">3.</span>] ]
   det(A) = [-<span class="num">5.</span>]

   Batch matrix determinant
   A = `[ `[ [<span class="num">1.</span>, <span class="num">4.</span>], [<span class="num">2.</span>, <span class="num">3.</span>] ],
        `[ [<span class="num">2.</span>, <span class="num">3.</span>], [<span class="num">1.</span>, <span class="num">4.</span>] ] ]
   det(A) = [-<span class="num">5.</span>, <span class="num">5.</span>]


Defined in src/operator/tensor/la_op.cc:L974</pre></div><dl class="paramcmts block"><dt class="param">A</dt><dd class="cmt"><p>Tensor of square matrix</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_extractdiag" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_extractdiag(A:org.apache.mxnet.javaapi.NDArray,offset:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_extractdiag(NDArray,Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_extractdiag</span><span class="params">(<span name="A">A: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="offset">offset: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_extractdiag(A:org.apache.mxnet.javaapi.NDArray,offset:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Extracts the diagonal entries of a square matrix.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, then *A* represents a single square matrix which diagonal elements get extracted as a <span class="num">1</span>-dimensional tensor.

If *n&gt;<span class="num">2</span>*, then *A* represents a batch of square matrices on the trailing two dimensions. The extracted diagonals are returned as an *n-<span class="num">1</span>*-dimensional tensor.

.. note:: The operator supports float32 and float64 data types only.

Examples::

    Single matrix diagonal extraction
    A = `[ [<span class="num">1.0</span>, <span class="num">2.0</span>],
         [<span class="num">3.0</span>, <span class="num">4.0</span>] ]

    extractdiag(A) = [<span class="num">1.0</span>, <span class="num">4.0</span>]

    extractdiag(A, <span class="num">1</span>) = [<span class="num">2.0</span>]

    Batch matrix diagonal extraction
    A = `[ `[ [<span class="num">1.0</span>, <span class="num">2.0</span>],
          [<span class="num">3.0</span>, <span class="num">4.0</span>] ],
         `[ [<span class="num">5.0</span>, <span class="num">6.0</span>],
          [<span class="num">7.0</span>, <span class="num">8.0</span>] ] ]

    extractdiag(A) = `[ [<span class="num">1.0</span>, <span class="num">4.0</span>],
                      [<span class="num">5.0</span>, <span class="num">8.0</span>] ]


Defined in src/operator/tensor/la_op.cc:L494</pre></div><dl class="paramcmts block"><dt class="param">A</dt><dd class="cmt"><p>Tensor of square matrices</p></dd><dt class="param">offset</dt><dd class="cmt"><p>Offset of the diagonal versus the main diagonal. 0 corresponds to the main diagonal, a negative/positive value to diagonals below/above the main diagonal.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_extracttrian" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_extracttrian(po:org.apache.mxnet.javaapi.linalg_extracttrianParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_extracttrian(linalg_extracttrianParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_extracttrian</span><span class="params">(<span name="po">po: <a href="linalg_extracttrianParam.html" class="extype" name="org.apache.mxnet.javaapi.linalg_extracttrianParam">linalg_extracttrianParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_extracttrian(po:org.apache.mxnet.javaapi.linalg_extracttrianParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Extracts a triangular sub-matrix from a square matrix.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, then *A* represents a single square matrix from which a triangular sub-matrix is extracted as a <span class="num">1</span>-dimensional tensor.

If *n&gt;<span class="num">2</span>*, then *A* represents a batch of square matrices on the trailing two dimensions. The extracted triangular sub-matrices are returned as an *n-<span class="num">1</span>*-dimensional tensor.

The *offset* and *lower* parameters determine the triangle to be extracted:

- When *offset = <span class="num">0</span>* either the lower or upper triangle <span class="kw">with</span> respect to the main diagonal is extracted depending on the value of parameter *lower*.
- When *offset = k &gt; <span class="num">0</span>* the upper triangle <span class="kw">with</span> respect to the k-th diagonal above the main diagonal is extracted.
- When *offset = k &lt; <span class="num">0</span>* the lower triangle <span class="kw">with</span> respect to the k-th diagonal below the main diagonal is extracted.

.. note:: The operator supports float32 and float64 data types only.

Examples::

    Single triagonal extraction
    A = `[ [<span class="num">1.0</span>, <span class="num">2.0</span>],
         [<span class="num">3.0</span>, <span class="num">4.0</span>] ]

    extracttrian(A) = [<span class="num">1.0</span>, <span class="num">3.0</span>, <span class="num">4.0</span>]
    extracttrian(A, lower=False) = [<span class="num">1.0</span>, <span class="num">2.0</span>, <span class="num">4.0</span>]
    extracttrian(A, <span class="num">1</span>) = [<span class="num">2.0</span>]
    extracttrian(A, -<span class="num">1</span>) = [<span class="num">3.0</span>]

    Batch triagonal extraction
    A = `[ `[ [<span class="num">1.0</span>, <span class="num">2.0</span>],
          [<span class="num">3.0</span>, <span class="num">4.0</span>] ],
         `[ [<span class="num">5.0</span>, <span class="num">6.0</span>],
          [<span class="num">7.0</span>, <span class="num">8.0</span>] ] ]

    extracttrian(A) = `[ [<span class="num">1.0</span>, <span class="num">3.0</span>, <span class="num">4.0</span>],
                       [<span class="num">5.0</span>, <span class="num">7.0</span>, <span class="num">8.0</span>] ]


Defined in src/operator/tensor/la_op.cc:L604</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_gelqf" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_gelqf(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_gelqf(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_gelqf</span><span class="params">(<span name="A">A: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_gelqf(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>LQ factorization <span class="kw">for</span> general matrix.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, we compute the LQ factorization (LAPACK *gelqf*, followed by *orglq*). *A*
must have shape *(x, y)* <span class="kw">with</span> *x &lt;= y*, and must have full rank *=x*. The LQ
factorization consists of *L* <span class="kw">with</span> shape *(x, x)* and *Q* <span class="kw">with</span> shape *(x, y)*, so
that:

   *A* = *L* \* *Q*

Here, *L* is lower triangular (upper triangle equal to zero) <span class="kw">with</span> nonzero diagonal,
and *Q* is row-orthonormal, meaning that

   *Q* \* *Q*\ :sup:`T`

is equal to the identity matrix of shape *(x, x)*.

If *n&gt;<span class="num">2</span>*, *gelqf* is performed separately on the trailing two dimensions <span class="kw">for</span> all
inputs (batch mode).

.. note:: The operator supports float32 and float64 data types only.

Examples::

   Single LQ factorization
   A = `[ [<span class="num">1.</span>, <span class="num">2.</span>, <span class="num">3.</span>], [<span class="num">4.</span>, <span class="num">5.</span>, <span class="num">6.</span>] ]
   Q, L = gelqf(A)
   Q = `[ [-<span class="num">0.26726124</span>, -<span class="num">0.53452248</span>, -<span class="num">0.80178373</span>],
        [<span class="num">0.87287156</span>, <span class="num">0.21821789</span>, -<span class="num">0.43643578</span>] ]
   L = `[ [-<span class="num">3.74165739</span>, <span class="num">0.</span>],
        [-<span class="num">8.55235974</span>, <span class="num">1.96396101</span>] ]

   Batch LQ factorization
   A = `[ `[ [<span class="num">1.</span>, <span class="num">2.</span>, <span class="num">3.</span>], [<span class="num">4.</span>, <span class="num">5.</span>, <span class="num">6.</span>] ],
        `[ [<span class="num">7.</span>, <span class="num">8.</span>, <span class="num">9.</span>], [<span class="num">10.</span>, <span class="num">11.</span>, <span class="num">12.</span>] ] ]
   Q, L = gelqf(A)
   Q = `[ `[ [-<span class="num">0.26726124</span>, -<span class="num">0.53452248</span>, -<span class="num">0.80178373</span>],
         [<span class="num">0.87287156</span>, <span class="num">0.21821789</span>, -<span class="num">0.43643578</span>] ],
        `[ [-<span class="num">0.50257071</span>, -<span class="num">0.57436653</span>, -<span class="num">0.64616234</span>],
         [<span class="num">0.7620735</span>, <span class="num">0.05862104</span>, -<span class="num">0.64483142</span>] ] ]
   L = `[ `[ [-<span class="num">3.74165739</span>, <span class="num">0.</span>],
         [-<span class="num">8.55235974</span>, <span class="num">1.96396101</span>] ],
        `[ [-<span class="num">13.92838828</span>, <span class="num">0.</span>],
         [-<span class="num">19.09768702</span>, <span class="num">0.52758934</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L797</pre></div><dl class="paramcmts block"><dt class="param">A</dt><dd class="cmt"><p>Tensor of input matrices to be factorized</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_gemm" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_gemm(po:org.apache.mxnet.javaapi.linalg_gemmParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_gemm(linalg_gemmParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_gemm</span><span class="params">(<span name="po">po: <a href="linalg_gemmParam.html" class="extype" name="org.apache.mxnet.javaapi.linalg_gemmParam">linalg_gemmParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_gemm(po:org.apache.mxnet.javaapi.linalg_gemmParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Performs general matrix multiplication and accumulation.
Input are tensors *A*, *B*, *C*, each of dimension *n &gt;= <span class="num">2</span>* and having the same shape
on the leading *n-<span class="num">2</span>* dimensions.

If *n=<span class="num">2</span>*, the BLAS3 function *gemm* is performed:

   *out* = *alpha* \* *op*\ (*A*) \* *op*\ (*B*) + *beta* \* *C*

Here, *alpha* and *beta* are scalar parameters, and *op()* is either the identity or
matrix transposition (depending on *transpose_a*, *transpose_b*).

If *n&gt;<span class="num">2</span>*, *gemm* is performed separately <span class="kw">for</span> a batch of matrices. The column indices of the matrices
are given by the last dimensions of the tensors, the row indices by the axis specified <span class="kw">with</span> the *axis*
parameter. By default, the trailing two dimensions will be used <span class="kw">for</span> matrix encoding.

For a non-default axis parameter, the operation performed is equivalent to a series of swapaxes/gemm/swapaxes
calls. For example let *A*, *B*, *C* be <span class="num">5</span> dimensional tensors. Then gemm(*A*, *B*, *C*, axis=<span class="num">1</span>) is equivalent
to the following without the overhead of the additional swapaxis operations::

    A1 = swapaxes(A, dim1=<span class="num">1</span>, dim2=<span class="num">3</span>)
    B1 = swapaxes(B, dim1=<span class="num">1</span>, dim2=<span class="num">3</span>)
    C = swapaxes(C, dim1=<span class="num">1</span>, dim2=<span class="num">3</span>)
    C = gemm(A1, B1, C)
    C = swapaxis(C, dim1=<span class="num">1</span>, dim2=<span class="num">3</span>)

When the input data is of <span class="kw">type</span> float32 and the environment variables MXNET_CUDA_ALLOW_TENSOR_CORE
and MXNET_CUDA_TENSOR_OP_MATH_ALLOW_CONVERSION are set to <span class="num">1</span>, <span class="kw">this</span> operator will <span class="kw">try</span> to use
pseudo-float16 precision (float32 math <span class="kw">with</span> float16 I/O) precision in order to use
Tensor Cores on suitable NVIDIA GPUs. This can sometimes give significant speedups.

.. note:: The operator supports float32 and float64 data types only.

Examples::

   Single matrix multiply-add
   A = `[ [<span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ]
   B = `[ [<span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ]
   C = `[ [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>] ]
   gemm(A, B, C, transpose_b=True, alpha=<span class="num">2.0</span>, beta=<span class="num">10.0</span>)
           = `[ [<span class="num">14.0</span>, <span class="num">14.0</span>, <span class="num">14.0</span>], [<span class="num">14.0</span>, <span class="num">14.0</span>, <span class="num">14.0</span>] ]

   Batch matrix multiply-add
   A = `[ `[ [<span class="num">1.0</span>, <span class="num">1.0</span>] ], `[ [<span class="num">0.1</span>, <span class="num">0.1</span>] ] ]
   B = `[ `[ [<span class="num">1.0</span>, <span class="num">1.0</span>] ], `[ [<span class="num">0.1</span>, <span class="num">0.1</span>] ] ]
   C = `[ `[ [<span class="num">10.0</span>] ], `[ [<span class="num">0.01</span>] ] ]
   gemm(A, B, C, transpose_b=True, alpha=<span class="num">2.0</span> , beta=<span class="num">10.0</span>)
           = `[ `[ [<span class="num">104.0</span>] ], `[ [<span class="num">0.14</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L88</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_gemm2" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_gemm2(po:org.apache.mxnet.javaapi.linalg_gemm2Param):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_gemm2(linalg_gemm2Param):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_gemm2</span><span class="params">(<span name="po">po: <a href="linalg_gemm2Param.html" class="extype" name="org.apache.mxnet.javaapi.linalg_gemm2Param">linalg_gemm2Param</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_gemm2(po:org.apache.mxnet.javaapi.linalg_gemm2Param):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Performs general matrix multiplication.
Input are tensors *A*, *B*, each of dimension *n &gt;= <span class="num">2</span>* and having the same shape
on the leading *n-<span class="num">2</span>* dimensions.

If *n=<span class="num">2</span>*, the BLAS3 function *gemm* is performed:

   *out* = *alpha* \* *op*\ (*A*) \* *op*\ (*B*)

Here *alpha* is a scalar parameter and *op()* is either the identity or the matrix
transposition (depending on *transpose_a*, *transpose_b*).

If *n&gt;<span class="num">2</span>*, *gemm* is performed separately <span class="kw">for</span> a batch of matrices. The column indices of the matrices
are given by the last dimensions of the tensors, the row indices by the axis specified <span class="kw">with</span> the *axis*
parameter. By default, the trailing two dimensions will be used <span class="kw">for</span> matrix encoding.

For a non-default axis parameter, the operation performed is equivalent to a series of swapaxes/gemm/swapaxes
calls. For example let *A*, *B* be <span class="num">5</span> dimensional tensors. Then gemm(*A*, *B*, axis=<span class="num">1</span>) is equivalent to
the following without the overhead of the additional swapaxis operations::

    A1 = swapaxes(A, dim1=<span class="num">1</span>, dim2=<span class="num">3</span>)
    B1 = swapaxes(B, dim1=<span class="num">1</span>, dim2=<span class="num">3</span>)
    C = gemm2(A1, B1)
    C = swapaxis(C, dim1=<span class="num">1</span>, dim2=<span class="num">3</span>)

When the input data is of <span class="kw">type</span> float32 and the environment variables MXNET_CUDA_ALLOW_TENSOR_CORE
and MXNET_CUDA_TENSOR_OP_MATH_ALLOW_CONVERSION are set to <span class="num">1</span>, <span class="kw">this</span> operator will <span class="kw">try</span> to use
pseudo-float16 precision (float32 math <span class="kw">with</span> float16 I/O) precision in order to use
Tensor Cores on suitable NVIDIA GPUs. This can sometimes give significant speedups.

.. note:: The operator supports float32 and float64 data types only.

Examples::

   Single matrix multiply
   A = `[ [<span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ]
   B = `[ [<span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ]
   gemm2(A, B, transpose_b=True, alpha=<span class="num">2.0</span>)
            = `[ [<span class="num">4.0</span>, <span class="num">4.0</span>, <span class="num">4.0</span>], [<span class="num">4.0</span>, <span class="num">4.0</span>, <span class="num">4.0</span>] ]

   Batch matrix multiply
   A = `[ `[ [<span class="num">1.0</span>, <span class="num">1.0</span>] ], `[ [<span class="num">0.1</span>, <span class="num">0.1</span>] ] ]
   B = `[ `[ [<span class="num">1.0</span>, <span class="num">1.0</span>] ], `[ [<span class="num">0.1</span>, <span class="num">0.1</span>] ] ]
   gemm2(A, B, transpose_b=True, alpha=<span class="num">2.0</span>)
           = `[ `[ [<span class="num">4.0</span>] ], `[ [<span class="num">0.04</span> ] ] ]


Defined in src/operator/tensor/la_op.cc:L162</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_inverse" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_inverse(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_inverse(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_inverse</span><span class="params">(<span name="A">A: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_inverse(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Compute the inverse of a matrix.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, *A* is a square matrix. We compute:

  *out* = *A*\ :sup:`-<span class="num">1</span>`

If *n&gt;<span class="num">2</span>*, *inverse* is performed separately on the trailing two dimensions
<span class="kw">for</span> all inputs (batch mode).

.. note:: The operator supports float32 and float64 data types only.

Examples::

   Single matrix inverse
   A = `[ [<span class="num">1.</span>, <span class="num">4.</span>], [<span class="num">2.</span>, <span class="num">3.</span>] ]
   inverse(A) = `[ [-<span class="num">0.6</span>, <span class="num">0.8</span>], [<span class="num">0.4</span>, -<span class="num">0.2</span>] ]

   Batch matrix inverse
   A = `[ `[ [<span class="num">1.</span>, <span class="num">4.</span>], [<span class="num">2.</span>, <span class="num">3.</span>] ],
        `[ [<span class="num">1.</span>, <span class="num">3.</span>], [<span class="num">2.</span>, <span class="num">4.</span>] ] ]
   inverse(A) = `[ `[ [-<span class="num">0.6</span>, <span class="num">0.8</span>], [<span class="num">0.4</span>, -<span class="num">0.2</span>] ],
                 `[ [-<span class="num">2.</span>, <span class="num">1.5</span>], [<span class="num">1.</span>, -<span class="num">0.5</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L919</pre></div><dl class="paramcmts block"><dt class="param">A</dt><dd class="cmt"><p>Tensor of square matrix</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_makediag" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_makediag(A:org.apache.mxnet.javaapi.NDArray,offset:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_makediag(NDArray,Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_makediag</span><span class="params">(<span name="A">A: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="offset">offset: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_makediag(A:org.apache.mxnet.javaapi.NDArray,offset:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Constructs a square matrix <span class="kw">with</span> the input as diagonal.
Input is a tensor *A* of dimension *n &gt;= <span class="num">1</span>*.

If *n=<span class="num">1</span>*, then *A* represents the diagonal entries of a single square matrix. This matrix will be returned as a <span class="num">2</span>-dimensional tensor.
If *n&gt;<span class="num">1</span>*, then *A* represents a batch of diagonals of square matrices. The batch of diagonal matrices will be returned as an *n+<span class="num">1</span>*-dimensional tensor.

.. note:: The operator supports float32 and float64 data types only.

Examples::

    Single diagonal matrix construction
    A = [<span class="num">1.0</span>, <span class="num">2.0</span>]

    makediag(A)    = `[ [<span class="num">1.0</span>, <span class="num">0.0</span>],
                      [<span class="num">0.0</span>, <span class="num">2.0</span>] ]

    makediag(A, <span class="num">1</span>) = `[ [<span class="num">0.0</span>, <span class="num">1.0</span>, <span class="num">0.0</span>],
                      [<span class="num">0.0</span>, <span class="num">0.0</span>, <span class="num">2.0</span>],
                      [<span class="num">0.0</span>, <span class="num">0.0</span>, <span class="num">0.0</span>] ]

    Batch diagonal matrix construction
    A = `[ [<span class="num">1.0</span>, <span class="num">2.0</span>],
         [<span class="num">3.0</span>, <span class="num">4.0</span>] ]

    makediag(A) = `[ `[ [<span class="num">1.0</span>, <span class="num">0.0</span>],
                    [<span class="num">0.0</span>, <span class="num">2.0</span>] ],
                   `[ [<span class="num">3.0</span>, <span class="num">0.0</span>],
                    [<span class="num">0.0</span>, <span class="num">4.0</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L546</pre></div><dl class="paramcmts block"><dt class="param">A</dt><dd class="cmt"><p>Tensor of diagonal entries</p></dd><dt class="param">offset</dt><dd class="cmt"><p>Offset of the diagonal versus the main diagonal. 0 corresponds to the main diagonal, a negative/positive value to diagonals below/above the main diagonal.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_maketrian" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_maketrian(po:org.apache.mxnet.javaapi.linalg_maketrianParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_maketrian(linalg_maketrianParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_maketrian</span><span class="params">(<span name="po">po: <a href="linalg_maketrianParam.html" class="extype" name="org.apache.mxnet.javaapi.linalg_maketrianParam">linalg_maketrianParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_maketrian(po:org.apache.mxnet.javaapi.linalg_maketrianParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Constructs a square matrix <span class="kw">with</span> the input representing a specific triangular sub-matrix.
This is basically the inverse of *linalg.extracttrian*. Input is a tensor *A* of dimension *n &gt;= <span class="num">1</span>*.

If *n=<span class="num">1</span>*, then *A* represents the entries of a triangular matrix which is lower triangular <span class="kw">if</span> *offset&lt;<span class="num">0</span>* or *offset=<span class="num">0</span>*, *lower=<span class="kw">true</span>*. The resulting matrix is derived by first constructing the square
matrix <span class="kw">with</span> the entries outside the triangle set to zero and then adding *offset*-times an additional
diagonal <span class="kw">with</span> zero entries to the square matrix.

If *n&gt;<span class="num">1</span>*, then *A* represents a batch of triangular sub-matrices. The batch of corresponding square matrices is returned as an *n+<span class="num">1</span>*-dimensional tensor.

.. note:: The operator supports float32 and float64 data types only.

Examples::

    Single  matrix construction
    A = [<span class="num">1.0</span>, <span class="num">2.0</span>, <span class="num">3.0</span>]

    maketrian(A)              = `[ [<span class="num">1.0</span>, <span class="num">0.0</span>],
                                 [<span class="num">2.0</span>, <span class="num">3.0</span>] ]

    maketrian(A, lower=<span class="kw">false</span>) = `[ [<span class="num">1.0</span>, <span class="num">2.0</span>],
                                 [<span class="num">0.0</span>, <span class="num">3.0</span>] ]

    maketrian(A, offset=<span class="num">1</span>)    = `[ [<span class="num">0.0</span>, <span class="num">1.0</span>, <span class="num">2.0</span>],
                                 [<span class="num">0.0</span>, <span class="num">0.0</span>, <span class="num">3.0</span>],
                                 [<span class="num">0.0</span>, <span class="num">0.0</span>, <span class="num">0.0</span>] ]
    maketrian(A, offset=-<span class="num">1</span>)   = `[ [<span class="num">0.0</span>, <span class="num">0.0</span>, <span class="num">0.0</span>],
                                 [<span class="num">1.0</span>, <span class="num">0.0</span>, <span class="num">0.0</span>],
                                 [<span class="num">2.0</span>, <span class="num">3.0</span>, <span class="num">0.0</span>] ]

    Batch matrix construction
    A = `[ [<span class="num">1.0</span>, <span class="num">2.0</span>, <span class="num">3.0</span>],
         [<span class="num">4.0</span>, <span class="num">5.0</span>, <span class="num">6.0</span>] ]

    maketrian(A)           = `[ `[ [<span class="num">1.0</span>, <span class="num">0.0</span>],
                               [<span class="num">2.0</span>, <span class="num">3.0</span>] ],
                              `[ [<span class="num">4.0</span>, <span class="num">0.0</span>],
                               [<span class="num">5.0</span>, <span class="num">6.0</span>] ] ]

    maketrian(A, offset=<span class="num">1</span>) = `[ `[ [<span class="num">0.0</span>, <span class="num">1.0</span>, <span class="num">2.0</span>],
                               [<span class="num">0.0</span>, <span class="num">0.0</span>, <span class="num">3.0</span>],
                               [<span class="num">0.0</span>, <span class="num">0.0</span>, <span class="num">0.0</span>] ],
                              `[ [<span class="num">0.0</span>, <span class="num">4.0</span>, <span class="num">5.0</span>],
                               [<span class="num">0.0</span>, <span class="num">0.0</span>, <span class="num">6.0</span>],
                               [<span class="num">0.0</span>, <span class="num">0.0</span>, <span class="num">0.0</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L672</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_potrf" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_potrf(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_potrf(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_potrf</span><span class="params">(<span name="A">A: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_potrf(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Performs Cholesky factorization of a symmetric positive-definite matrix.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, the Cholesky factor *B* of the symmetric, positive definite matrix *A* is
computed. *B* is triangular (entries of upper or lower triangle are all zero), has
positive diagonal entries, and:

  *A* = *B* \* *B*\ :sup:`T`  <span class="kw">if</span> *lower* = *<span class="kw">true</span>*
  *A* = *B*\ :sup:`T` \* *B*  <span class="kw">if</span> *lower* = *<span class="kw">false</span>*

If *n&gt;<span class="num">2</span>*, *potrf* is performed separately on the trailing two dimensions <span class="kw">for</span> all inputs
(batch mode).

.. note:: The operator supports float32 and float64 data types only.

Examples::

   Single matrix factorization
   A = `[ [<span class="num">4.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">4.25</span>] ]
   potrf(A) = `[ [<span class="num">2.0</span>, <span class="num">0</span>], [<span class="num">0.5</span>, <span class="num">2.0</span>] ]

   Batch matrix factorization
   A = `[ `[ [<span class="num">4.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">4.25</span>] ], `[ [<span class="num">16.0</span>, <span class="num">4.0</span>], [<span class="num">4.0</span>, <span class="num">17.0</span>] ] ]
   potrf(A) = `[ `[ [<span class="num">2.0</span>, <span class="num">0</span>], [<span class="num">0.5</span>, <span class="num">2.0</span>] ], `[ [<span class="num">4.0</span>, <span class="num">0</span>], [<span class="num">1.0</span>, <span class="num">4.0</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L213</pre></div><dl class="paramcmts block"><dt class="param">A</dt><dd class="cmt"><p>Tensor of input matrices to be decomposed</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_potri" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_potri(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_potri(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_potri</span><span class="params">(<span name="A">A: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_potri(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Performs matrix inversion from a Cholesky factorization.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, *A* is a triangular matrix (entries of upper or lower triangle are all zero)
<span class="kw">with</span> positive diagonal. We compute:

  *out* = *A*\ :sup:`-T` \* *A*\ :sup:`-<span class="num">1</span>` <span class="kw">if</span> *lower* = *<span class="kw">true</span>*
  *out* = *A*\ :sup:`-<span class="num">1</span>` \* *A*\ :sup:`-T` <span class="kw">if</span> *lower* = *<span class="kw">false</span>*

In other words, <span class="kw">if</span> *A* is the Cholesky factor of a symmetric positive definite matrix
*B* (obtained by *potrf*), then

  *out* = *B*\ :sup:`-<span class="num">1</span>`

If *n&gt;<span class="num">2</span>*, *potri* is performed separately on the trailing two dimensions <span class="kw">for</span> all inputs
(batch mode).

.. note:: The operator supports float32 and float64 data types only.

.. note:: Use <span class="kw">this</span> operator only <span class="kw">if</span> you are certain you need the inverse of *B*, and
          cannot use the Cholesky factor *A* (*potrf*), together <span class="kw">with</span> backsubstitution
          (*trsm*). The latter is numerically much safer, and also cheaper.

Examples::

   Single matrix inverse
   A = `[ [<span class="num">2.0</span>, <span class="num">0</span>], [<span class="num">0.5</span>, <span class="num">2.0</span>] ]
   potri(A) = `[ [<span class="num">0.26563</span>, -<span class="num">0.0625</span>], [-<span class="num">0.0625</span>, <span class="num">0.25</span>] ]

   Batch matrix inverse
   A = `[ `[ [<span class="num">2.0</span>, <span class="num">0</span>], [<span class="num">0.5</span>, <span class="num">2.0</span>] ], `[ [<span class="num">4.0</span>, <span class="num">0</span>], [<span class="num">1.0</span>, <span class="num">4.0</span>] ] ]
   potri(A) = `[ `[ [<span class="num">0.26563</span>, -<span class="num">0.0625</span>], [-<span class="num">0.0625</span>, <span class="num">0.25</span>] ],
               `[ [<span class="num">0.06641</span>, -<span class="num">0.01562</span>], [-<span class="num">0.01562</span>, <span class="num">0</span>,<span class="num">0625</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L274</pre></div><dl class="paramcmts block"><dt class="param">A</dt><dd class="cmt"><p>Tensor of lower triangular matrices</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_slogdet" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_slogdet(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_slogdet(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_slogdet</span><span class="params">(<span name="A">A: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_slogdet(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Compute the sign and log of the determinant of a matrix.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, *A* is a square matrix. We compute:

  *sign* = *sign(det(A))*
  *logabsdet* = *log(abs(det(A)))*

If *n&gt;<span class="num">2</span>*, *slogdet* is performed separately on the trailing two dimensions
<span class="kw">for</span> all inputs (batch mode).

.. note:: The operator supports float32 and float64 data types only.
.. note:: The gradient is not properly defined on sign, so the gradient of
          it is not backwarded.
.. note:: No gradient is backwarded when A is non-invertible. Please see
          the docs of operator det <span class="kw">for</span> detail.

Examples::

   Single matrix signed log determinant
   A = `[ [<span class="num">2.</span>, <span class="num">3.</span>], [<span class="num">1.</span>, <span class="num">4.</span>] ]
   sign, logabsdet = slogdet(A)
   sign = [<span class="num">1.</span>]
   logabsdet = [<span class="num">1.609438</span>]

   Batch matrix signed log determinant
   A = `[ `[ [<span class="num">2.</span>, <span class="num">3.</span>], [<span class="num">1.</span>, <span class="num">4.</span>] ],
        `[ [<span class="num">1.</span>, <span class="num">2.</span>], [<span class="num">2.</span>, <span class="num">4.</span>] ],
        `[ [<span class="num">1.</span>, <span class="num">2.</span>], [<span class="num">4.</span>, <span class="num">3.</span>] ] ]
   sign, logabsdet = slogdet(A)
   sign = [<span class="num">1.</span>, <span class="num">0.</span>, -<span class="num">1.</span>]
   logabsdet = [<span class="num">1.609438</span>, -inf, <span class="num">1.609438</span>]


Defined in src/operator/tensor/la_op.cc:L1033</pre></div><dl class="paramcmts block"><dt class="param">A</dt><dd class="cmt"><p>Tensor of square matrix</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_sumlogdiag" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_sumlogdiag(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_sumlogdiag(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_sumlogdiag</span><span class="params">(<span name="A">A: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_sumlogdiag(A:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the sum of the logarithms of the diagonal elements of a square matrix.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, *A* must be square <span class="kw">with</span> positive diagonal entries. We sum the natural
logarithms of the diagonal elements, the result has shape (<span class="num">1</span>,).

If *n&gt;<span class="num">2</span>*, *sumlogdiag* is performed separately on the trailing two dimensions <span class="kw">for</span> all
inputs (batch mode).

.. note:: The operator supports float32 and float64 data types only.

Examples::

   Single matrix reduction
   A = `[ [<span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">7.0</span>] ]
   sumlogdiag(A) = [<span class="num">1.9459</span>]

   Batch matrix reduction
   A = `[ `[ [<span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">7.0</span>] ], `[ [<span class="num">3.0</span>, <span class="num">0</span>], [<span class="num">0</span>, <span class="num">17.0</span>] ] ]
   sumlogdiag(A) = [<span class="num">1.9459</span>, <span class="num">3.9318</span>]


Defined in src/operator/tensor/la_op.cc:L444</pre></div><dl class="paramcmts block"><dt class="param">A</dt><dd class="cmt"><p>Tensor of square matrices</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_syrk" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_syrk(po:org.apache.mxnet.javaapi.linalg_syrkParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_syrk(linalg_syrkParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_syrk</span><span class="params">(<span name="po">po: <a href="linalg_syrkParam.html" class="extype" name="org.apache.mxnet.javaapi.linalg_syrkParam">linalg_syrkParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_syrk(po:org.apache.mxnet.javaapi.linalg_syrkParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Multiplication of matrix <span class="kw">with</span> its transpose.
Input is a tensor *A* of dimension *n &gt;= <span class="num">2</span>*.

If *n=<span class="num">2</span>*, the operator performs the BLAS3 function *syrk*:

  *out* = *alpha* \* *A* \* *A*\ :sup:`T`

<span class="kw">if</span> *transpose=False*, or

  *out* = *alpha* \* *A*\ :sup:`T` \ \* *A*

<span class="kw">if</span> *transpose=True*.

If *n&gt;<span class="num">2</span>*, *syrk* is performed separately on the trailing two dimensions <span class="kw">for</span> all
inputs (batch mode).

.. note:: The operator supports float32 and float64 data types only.

Examples::

   Single matrix multiply
   A = `[ [<span class="num">1.</span>, <span class="num">2.</span>, <span class="num">3.</span>], [<span class="num">4.</span>, <span class="num">5.</span>, <span class="num">6.</span>] ]
   syrk(A, alpha=<span class="num">1.</span>, transpose=False)
            = `[ [<span class="num">14.</span>, <span class="num">32.</span>],
               [<span class="num">32.</span>, <span class="num">77.</span>] ]
   syrk(A, alpha=<span class="num">1.</span>, transpose=True)
            = `[ [<span class="num">17.</span>, <span class="num">22.</span>, <span class="num">27.</span>],
               [<span class="num">22.</span>, <span class="num">29.</span>, <span class="num">36.</span>],
               [<span class="num">27.</span>, <span class="num">36.</span>, <span class="num">45.</span>] ]

   Batch matrix multiply
   A = `[ `[ [<span class="num">1.</span>, <span class="num">1.</span>] ], `[ [<span class="num">0.1</span>, <span class="num">0.1</span>] ] ]
   syrk(A, alpha=<span class="num">2.</span>, transpose=False) = `[ `[ [<span class="num">4.</span>] ], `[ [<span class="num">0.04</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L729</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_trmm" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_trmm(po:org.apache.mxnet.javaapi.linalg_trmmParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_trmm(linalg_trmmParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_trmm</span><span class="params">(<span name="po">po: <a href="linalg_trmmParam.html" class="extype" name="org.apache.mxnet.javaapi.linalg_trmmParam">linalg_trmmParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_trmm(po:org.apache.mxnet.javaapi.linalg_trmmParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Performs multiplication <span class="kw">with</span> a lower triangular matrix.
Input are tensors *A*, *B*, each of dimension *n &gt;= <span class="num">2</span>* and having the same shape
on the leading *n-<span class="num">2</span>* dimensions.

If *n=<span class="num">2</span>*, *A* must be triangular. The operator performs the BLAS3 function
*trmm*:

   *out* = *alpha* \* *op*\ (*A*) \* *B*

<span class="kw">if</span> *rightside=False*, or

   *out* = *alpha* \* *B* \* *op*\ (*A*)

<span class="kw">if</span> *rightside=True*. Here, *alpha* is a scalar parameter, and *op()* is either the
identity or the matrix transposition (depending on *transpose*).

If *n&gt;<span class="num">2</span>*, *trmm* is performed separately on the trailing two dimensions <span class="kw">for</span> all inputs
(batch mode).

.. note:: The operator supports float32 and float64 data types only.

Examples::

   Single triangular matrix multiply
   A = `[ [<span class="num">1.0</span>, <span class="num">0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ]
   B = `[ [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>] ]
   trmm(A, B, alpha=<span class="num">2.0</span>) = `[ [<span class="num">2.0</span>, <span class="num">2.0</span>, <span class="num">2.0</span>], [<span class="num">4.0</span>, <span class="num">4.0</span>, <span class="num">4.0</span>] ]

   Batch triangular matrix multiply
   A = `[ `[ [<span class="num">1.0</span>, <span class="num">0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ], `[ [<span class="num">1.0</span>, <span class="num">0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ] ]
   B = `[ `[ [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>] ], `[ [<span class="num">0.5</span>, <span class="num">0.5</span>, <span class="num">0.5</span>], [<span class="num">0.5</span>, <span class="num">0.5</span>, <span class="num">0.5</span>] ] ]
   trmm(A, B, alpha=<span class="num">2.0</span>) = `[ `[ [<span class="num">2.0</span>, <span class="num">2.0</span>, <span class="num">2.0</span>], [<span class="num">4.0</span>, <span class="num">4.0</span>, <span class="num">4.0</span>] ],
                            `[ [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">2.0</span>, <span class="num">2.0</span>, <span class="num">2.0</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L332</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#linalg_trsm" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="linalg_trsm(po:org.apache.mxnet.javaapi.linalg_trsmParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="linalg_trsm(linalg_trsmParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">linalg_trsm</span><span class="params">(<span name="po">po: <a href="linalg_trsmParam.html" class="extype" name="org.apache.mxnet.javaapi.linalg_trsmParam">linalg_trsmParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@linalg_trsm(po:org.apache.mxnet.javaapi.linalg_trsmParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Solves matrix equation involving a lower triangular matrix.
Input are tensors *A*, *B*, each of dimension *n &gt;= <span class="num">2</span>* and having the same shape
on the leading *n-<span class="num">2</span>* dimensions.

If *n=<span class="num">2</span>*, *A* must be triangular. The operator performs the BLAS3 function
*trsm*, solving <span class="kw">for</span> *out* in:

   *op*\ (*A*) \* *out* = *alpha* \* *B*

<span class="kw">if</span> *rightside=False*, or

   *out* \* *op*\ (*A*) = *alpha* \* *B*

<span class="kw">if</span> *rightside=True*. Here, *alpha* is a scalar parameter, and *op()* is either the
identity or the matrix transposition (depending on *transpose*).

If *n&gt;<span class="num">2</span>*, *trsm* is performed separately on the trailing two dimensions <span class="kw">for</span> all inputs
(batch mode).

.. note:: The operator supports float32 and float64 data types only.

Examples::

   Single matrix solve
   A = `[ [<span class="num">1.0</span>, <span class="num">0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ]
   B = `[ [<span class="num">2.0</span>, <span class="num">2.0</span>, <span class="num">2.0</span>], [<span class="num">4.0</span>, <span class="num">4.0</span>, <span class="num">4.0</span>] ]
   trsm(A, B, alpha=<span class="num">0.5</span>) = `[ [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>] ]

   Batch matrix solve
   A = `[ `[ [<span class="num">1.0</span>, <span class="num">0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ], `[ [<span class="num">1.0</span>, <span class="num">0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>] ] ]
   B = `[ `[ [<span class="num">2.0</span>, <span class="num">2.0</span>, <span class="num">2.0</span>], [<span class="num">4.0</span>, <span class="num">4.0</span>, <span class="num">4.0</span>] ],
        `[ [<span class="num">4.0</span>, <span class="num">4.0</span>, <span class="num">4.0</span>], [<span class="num">8.0</span>, <span class="num">8.0</span>, <span class="num">8.0</span>] ] ]
   trsm(A, B, alpha=<span class="num">0.5</span>) = `[ `[ [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>], [<span class="num">1.0</span>, <span class="num">1.0</span>, <span class="num">1.0</span>] ],
                            `[ [<span class="num">2.0</span>, <span class="num">2.0</span>, <span class="num">2.0</span>], [<span class="num">2.0</span>, <span class="num">2.0</span>, <span class="num">2.0</span>] ] ]


Defined in src/operator/tensor/la_op.cc:L395</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#log" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="log(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="log(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">log</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@log(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise Natural logarithmic value of the input.

The natural logarithm is logarithm in base *e*, so that ``log(exp(x)) = x``

The storage <span class="kw">type</span> of ``log`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_logexp.cc:L77</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#log10" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="log10(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="log10(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">log10</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@log10(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise Base-<span class="num">10</span> logarithmic value of the input.

``<span class="num">10</span>**log10(x) = x``

The storage <span class="kw">type</span> of ``log10`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_logexp.cc:L94</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#log1p" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="log1p(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="log1p(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">log1p</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@log1p(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise ``log(<span class="num">1</span> + x)`` value of the input.

This function is more accurate than ``log(<span class="num">1</span> + x)``  <span class="kw">for</span> small ``x`` so that
:math:`<span class="num">1</span>+x\approx <span class="num">1</span>`

The storage <span class="kw">type</span> of ``log1p`` output depends upon the input storage <span class="kw">type</span>:

   - log1p(default) = default
   - log1p(row_sparse) = row_sparse
   - log1p(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_logexp.cc:L199</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#log2" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="log2(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="log2(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">log2</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@log2(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise Base-<span class="num">2</span> logarithmic value of the input.

``<span class="num">2</span>**log2(x) = x``

The storage <span class="kw">type</span> of ``log2`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_logexp.cc:L106</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#log_softmax" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="log_softmax(po:org.apache.mxnet.javaapi.log_softmaxParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="log_softmax(log_softmaxParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">log_softmax</span><span class="params">(<span name="po">po: <a href="log_softmaxParam.html" class="extype" name="org.apache.mxnet.javaapi.log_softmaxParam">log_softmaxParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@log_softmax(po:org.apache.mxnet.javaapi.log_softmaxParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the log softmax of the input.
This is equivalent to computing softmax followed by log.

Examples::

  &gt;&gt;&gt; x = mx.nd.array([<span class="num">1</span>, <span class="num">2</span>, <span class="num">.1</span>])
  &gt;&gt;&gt; mx.nd.log_softmax(x).asnumpy()
  array([-<span class="num">1.41702998</span>, -<span class="num">0.41702995</span>, -<span class="num">2.31702995</span>], dtype=float32)

  &gt;&gt;&gt; x = mx.nd.array( `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">.1</span>],[<span class="num">.1</span>, <span class="num">2</span>, <span class="num">1</span>] ] )
  &gt;&gt;&gt; mx.nd.log_softmax(x, axis=<span class="num">0</span>).asnumpy()
  array(`[ [-<span class="num">0.34115392</span>, -<span class="num">0.69314718</span>, -<span class="num">1.24115396</span>],
         [-<span class="num">1.24115396</span>, -<span class="num">0.69314718</span>, -<span class="num">0.34115392</span>] ], dtype=float32)</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#logical_not" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="logical_not(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="logical_not(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">logical_not</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@logical_not(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the result of logical NOT (!) function

Example:
  logical_not([-<span class="num">2.</span>, <span class="num">0.</span>, <span class="num">1.</span>]) = [<span class="num">0.</span>, <span class="num">1.</span>, <span class="num">0.</span>]</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#make_loss" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="make_loss(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="make_loss(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">make_loss</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@make_loss(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Make your own loss function in network construction.

This operator accepts a customized loss function symbol as a terminal loss and
the symbol should be an operator <span class="kw">with</span> no backward dependency.
The output of <span class="kw">this</span> function is the gradient of loss <span class="kw">with</span> respect to the input data.

For example, <span class="kw">if</span> you are a making a cross entropy loss function. Assume ``out`` is the
predicted output and ``label`` is the <span class="kw">true</span> label, then the cross entropy can be defined as::

  cross_entropy = label * log(out) + (<span class="num">1</span> - label) * log(<span class="num">1</span> - out)
  loss = make_loss(cross_entropy)

We will need to use ``make_loss`` when we are creating our own loss function or we want to
combine multiple loss functions. Also we may want to stop some variables' gradients
from backpropagation. See more detail in ``BlockGrad`` or ``stop_gradient``.

The storage <span class="kw">type</span> of ``make_loss`` output depends upon the input storage <span class="kw">type</span>:

   - make_loss(default) = default
   - make_loss(row_sparse) = row_sparse



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L358</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#max" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="max(po:org.apache.mxnet.javaapi.maxParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="max(maxParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">max</span><span class="params">(<span name="po">po: <a href="maxParam.html" class="extype" name="org.apache.mxnet.javaapi.maxParam">maxParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@max(po:org.apache.mxnet.javaapi.maxParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the max of array elements over given axes.

Defined in src/operator/tensor/./broadcast_reduce_op.h:L31</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#max_axis" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="max_axis(po:org.apache.mxnet.javaapi.max_axisParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="max_axis(max_axisParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">max_axis</span><span class="params">(<span name="po">po: <a href="max_axisParam.html" class="extype" name="org.apache.mxnet.javaapi.max_axisParam">max_axisParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@max_axis(po:org.apache.mxnet.javaapi.max_axisParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the max of array elements over given axes.

Defined in src/operator/tensor/./broadcast_reduce_op.h:L31</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#mean" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="mean(po:org.apache.mxnet.javaapi.meanParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="mean(meanParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">mean</span><span class="params">(<span name="po">po: <a href="meanParam.html" class="extype" name="org.apache.mxnet.javaapi.meanParam">meanParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@mean(po:org.apache.mxnet.javaapi.meanParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the mean of array elements over given axes.

Defined in src/operator/tensor/./broadcast_reduce_op.h:L83</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#min" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="min(po:org.apache.mxnet.javaapi.minParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="min(minParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">min</span><span class="params">(<span name="po">po: <a href="minParam.html" class="extype" name="org.apache.mxnet.javaapi.minParam">minParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@min(po:org.apache.mxnet.javaapi.minParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the min of array elements over given axes.

Defined in src/operator/tensor/./broadcast_reduce_op.h:L46</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#min_axis" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="min_axis(po:org.apache.mxnet.javaapi.min_axisParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="min_axis(min_axisParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">min_axis</span><span class="params">(<span name="po">po: <a href="min_axisParam.html" class="extype" name="org.apache.mxnet.javaapi.min_axisParam">min_axisParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@min_axis(po:org.apache.mxnet.javaapi.min_axisParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the min of array elements over given axes.

Defined in src/operator/tensor/./broadcast_reduce_op.h:L46</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#moments" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="moments(po:org.apache.mxnet.javaapi.momentsParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="moments(momentsParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">moments</span><span class="params">(<span name="po">po: <a href="momentsParam.html" class="extype" name="org.apache.mxnet.javaapi.momentsParam">momentsParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@moments(po:org.apache.mxnet.javaapi.momentsParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Calculate the mean and variance of `data`.

The mean and variance are calculated by aggregating the contents of data across axes.
If x is <span class="num">1</span>-D and axes = [<span class="num">0</span>] <span class="kw">this</span> is just the mean and variance of a vector.

Example:

     x = `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>], [<span class="num">4</span>, <span class="num">5</span>, <span class="num">6</span>] ]
     mean, <span class="kw">var</span> = moments(data=x, axes=[<span class="num">0</span>])
     mean = [<span class="num">2.5</span>, <span class="num">3.5</span>, <span class="num">4.5</span>]
     <span class="kw">var</span> = [<span class="num">2.25</span>, <span class="num">2.25</span>, <span class="num">2.25</span>]
     mean, <span class="kw">var</span> = moments(data=x, axes=[<span class="num">1</span>])
     mean = [<span class="num">2.0</span>, <span class="num">5.0</span>]
     <span class="kw">var</span> = [<span class="num">0.66666667</span>, <span class="num">0.66666667</span>]
     mean, <span class="kw">var</span> = moments(data=x, axis=[<span class="num">0</span>, <span class="num">1</span>])
     mean = [<span class="num">3.5</span>]
     <span class="kw">var</span> = [<span class="num">2.9166667</span>]



Defined in src/operator/nn/moments.cc:L53</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#mp_lamb_update_phase1" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="mp_lamb_update_phase1(po:org.apache.mxnet.javaapi.mp_lamb_update_phase1Param):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="mp_lamb_update_phase1(mp_lamb_update_phase1Param):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">mp_lamb_update_phase1</span><span class="params">(<span name="po">po: <a href="mp_lamb_update_phase1Param.html" class="extype" name="org.apache.mxnet.javaapi.mp_lamb_update_phase1Param">mp_lamb_update_phase1Param</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@mp_lamb_update_phase1(po:org.apache.mxnet.javaapi.mp_lamb_update_phase1Param):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Mixed Precision version of Phase I of lamb update
it performs the following operations and returns g:.

          Link to paper: https:<span class="cmt">//arxiv.org/pdf/1904.00962.pdf</span>

          .. math::
              \begin{gather*}
              grad32 = grad(float16) * rescale_grad
              <span class="kw">if</span> (grad &lt; -clip_gradient)
              then
                   grad = -clip_gradient
              <span class="kw">if</span> (grad &gt; clip_gradient)
              then
                   grad = clip_gradient

              mean = beta1 * mean + (<span class="num">1</span> - beta1) * grad;
              variance = beta2 * variance + (<span class="num">1.</span> - beta2) * grad ^ <span class="num">2</span>;

              <span class="kw">if</span> (bias_correction)
              then
                   mean_hat = mean / (<span class="num">1.</span> - beta1^t);
                   var_hat = <span class="kw">var</span> / (<span class="num">1</span> - beta2^t);
                   g = mean_hat / (var_hat^(<span class="num">1</span>/<span class="num">2</span>) + epsilon) + wd * weight32;
              <span class="kw">else</span>
                   g = mean / (var_data^(<span class="num">1</span>/<span class="num">2</span>) + epsilon) + wd * weight32;
              \end{gather*}



Defined in src/operator/optimizer_op.cc:L1032</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#mp_lamb_update_phase2" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="mp_lamb_update_phase2(po:org.apache.mxnet.javaapi.mp_lamb_update_phase2Param):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="mp_lamb_update_phase2(mp_lamb_update_phase2Param):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">mp_lamb_update_phase2</span><span class="params">(<span name="po">po: <a href="mp_lamb_update_phase2Param.html" class="extype" name="org.apache.mxnet.javaapi.mp_lamb_update_phase2Param">mp_lamb_update_phase2Param</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@mp_lamb_update_phase2(po:org.apache.mxnet.javaapi.mp_lamb_update_phase2Param):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Mixed Precision version Phase II of lamb update
it performs the following operations and updates grad.

          Link to paper: https:<span class="cmt">//arxiv.org/pdf/1904.00962.pdf</span>

          .. math::
              \begin{gather*}
              <span class="kw">if</span> (lower_bound &gt;= <span class="num">0</span>)
              then
                   r1 = max(r1, lower_bound)
              <span class="kw">if</span> (upper_bound &gt;= <span class="num">0</span>)
              then
                   r1 = max(r1, upper_bound)

              <span class="kw">if</span> (r1 == <span class="num">0</span> or r2 == <span class="num">0</span>)
              then
                   lr = lr
              <span class="kw">else</span>
                   lr = lr * (r1/r2)
              weight32 = weight32 - lr * g
              weight(float16) = weight32
              \end{gather*}



Defined in src/operator/optimizer_op.cc:L1074</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#mp_nag_mom_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="mp_nag_mom_update(po:org.apache.mxnet.javaapi.mp_nag_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="mp_nag_mom_update(mp_nag_mom_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">mp_nag_mom_update</span><span class="params">(<span name="po">po: <a href="mp_nag_mom_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.mp_nag_mom_updateParam">mp_nag_mom_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@mp_nag_mom_update(po:org.apache.mxnet.javaapi.mp_nag_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> multi-precision Nesterov Accelerated Gradient( NAG) optimizer.


Defined in src/operator/optimizer_op.cc:L744</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#mp_sgd_mom_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="mp_sgd_mom_update(po:org.apache.mxnet.javaapi.mp_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="mp_sgd_mom_update(mp_sgd_mom_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">mp_sgd_mom_update</span><span class="params">(<span name="po">po: <a href="mp_sgd_mom_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.mp_sgd_mom_updateParam">mp_sgd_mom_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@mp_sgd_mom_update(po:org.apache.mxnet.javaapi.mp_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Updater function <span class="kw">for</span> multi-precision sgd optimizer</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#mp_sgd_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="mp_sgd_update(po:org.apache.mxnet.javaapi.mp_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="mp_sgd_update(mp_sgd_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">mp_sgd_update</span><span class="params">(<span name="po">po: <a href="mp_sgd_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.mp_sgd_updateParam">mp_sgd_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@mp_sgd_update(po:org.apache.mxnet.javaapi.mp_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Updater function <span class="kw">for</span> multi-precision sgd optimizer</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#multi_all_finite" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="multi_all_finite(po:org.apache.mxnet.javaapi.multi_all_finiteParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="multi_all_finite(multi_all_finiteParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">multi_all_finite</span><span class="params">(<span name="po">po: <a href="multi_all_finiteParam.html" class="extype" name="org.apache.mxnet.javaapi.multi_all_finiteParam">multi_all_finiteParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@multi_all_finite(po:org.apache.mxnet.javaapi.multi_all_finiteParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Check <span class="kw">if</span> all the float numbers in all the arrays are finite (used <span class="kw">for</span> AMP)


Defined in src/operator/contrib/all_finite.cc:L132</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#multi_lars" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="multi_lars(lrs:org.apache.mxnet.javaapi.NDArray,weights_sum_sq:org.apache.mxnet.javaapi.NDArray,grads_sum_sq:org.apache.mxnet.javaapi.NDArray,wds:org.apache.mxnet.javaapi.NDArray,eta:Float,eps:Float,rescale_grad:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="multi_lars(NDArray,NDArray,NDArray,NDArray,Float,Float,Float,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">multi_lars</span><span class="params">(<span name="lrs">lrs: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="weights_sum_sq">weights_sum_sq: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="grads_sum_sq">grads_sum_sq: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="wds">wds: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="eta">eta: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="eps">eps: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="rescale_grad">rescale_grad: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@multi_lars(lrs:org.apache.mxnet.javaapi.NDArray,weights_sum_sq:org.apache.mxnet.javaapi.NDArray,grads_sum_sq:org.apache.mxnet.javaapi.NDArray,wds:org.apache.mxnet.javaapi.NDArray,eta:Float,eps:Float,rescale_grad:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Compute the LARS coefficients of multiple weights and grads from their sums of square<span class="lit">"


Defined in src/operator/contrib/multi_lars.cc:L36</span></pre></div><dl class="paramcmts block"><dt class="param">lrs</dt><dd class="cmt"><p>Learning rates to scale by LARS coefficient</p></dd><dt class="param">weights_sum_sq</dt><dd class="cmt"><p>sum of square of weights arrays</p></dd><dt class="param">grads_sum_sq</dt><dd class="cmt"><p>sum of square of gradients arrays</p></dd><dt class="param">wds</dt><dd class="cmt"><p>weight decays</p></dd><dt class="param">eta</dt><dd class="cmt"><p>LARS eta</p></dd><dt class="param">eps</dt><dd class="cmt"><p>LARS eps</p></dd><dt class="param">rescale_grad</dt><dd class="cmt"><p>Gradient rescaling factor</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#multi_mp_sgd_mom_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="multi_mp_sgd_mom_update(po:org.apache.mxnet.javaapi.multi_mp_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="multi_mp_sgd_mom_update(multi_mp_sgd_mom_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">multi_mp_sgd_mom_update</span><span class="params">(<span name="po">po: <a href="multi_mp_sgd_mom_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.multi_mp_sgd_mom_updateParam">multi_mp_sgd_mom_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@multi_mp_sgd_mom_update(po:org.apache.mxnet.javaapi.multi_mp_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Momentum update function <span class="kw">for</span> multi-precision Stochastic Gradient Descent (SGD) optimizer.

Momentum update has better convergence rates on neural networks. Mathematically it looks
like below:

.. math::

  v_1 = \alpha * \nabla J(W_0)\\
  v_t = \gamma v_{t-<span class="num">1</span>} - \alpha * \nabla J(W_{t-<span class="num">1</span>})\\
  W_t = W_{t-<span class="num">1</span>} + v_t

It updates the weights using::

  v = momentum * v - learning_rate * gradient
  weight += v

Where the parameter ``momentum`` is the decay rate of momentum estimates at each epoch.



Defined in src/operator/optimizer_op.cc:L471</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#multi_mp_sgd_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="multi_mp_sgd_update(po:org.apache.mxnet.javaapi.multi_mp_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="multi_mp_sgd_update(multi_mp_sgd_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">multi_mp_sgd_update</span><span class="params">(<span name="po">po: <a href="multi_mp_sgd_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.multi_mp_sgd_updateParam">multi_mp_sgd_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@multi_mp_sgd_update(po:org.apache.mxnet.javaapi.multi_mp_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> multi-precision Stochastic Gradient Descent (SDG) optimizer.

It updates the weights using::

 weight = weight - learning_rate * (gradient + wd * weight)



Defined in src/operator/optimizer_op.cc:L416</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#multi_sgd_mom_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="multi_sgd_mom_update(po:org.apache.mxnet.javaapi.multi_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="multi_sgd_mom_update(multi_sgd_mom_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">multi_sgd_mom_update</span><span class="params">(<span name="po">po: <a href="multi_sgd_mom_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.multi_sgd_mom_updateParam">multi_sgd_mom_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@multi_sgd_mom_update(po:org.apache.mxnet.javaapi.multi_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Momentum update function <span class="kw">for</span> Stochastic Gradient Descent (SGD) optimizer.

Momentum update has better convergence rates on neural networks. Mathematically it looks
like below:

.. math::

  v_1 = \alpha * \nabla J(W_0)\\
  v_t = \gamma v_{t-<span class="num">1</span>} - \alpha * \nabla J(W_{t-<span class="num">1</span>})\\
  W_t = W_{t-<span class="num">1</span>} + v_t

It updates the weights using::

  v = momentum * v - learning_rate * gradient
  weight += v

Where the parameter ``momentum`` is the decay rate of momentum estimates at each epoch.



Defined in src/operator/optimizer_op.cc:L373</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#multi_sgd_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="multi_sgd_update(po:org.apache.mxnet.javaapi.multi_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="multi_sgd_update(multi_sgd_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">multi_sgd_update</span><span class="params">(<span name="po">po: <a href="multi_sgd_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.multi_sgd_updateParam">multi_sgd_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@multi_sgd_update(po:org.apache.mxnet.javaapi.multi_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> Stochastic Gradient Descent (SDG) optimizer.

It updates the weights using::

 weight = weight - learning_rate * (gradient + wd * weight)



Defined in src/operator/optimizer_op.cc:L328</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#multi_sum_sq" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="multi_sum_sq(data:Array[org.apache.mxnet.javaapi.NDArray],num_arrays:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="multi_sum_sq(Array[NDArray],Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">multi_sum_sq</span><span class="params">(<span name="data">data: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>, <span name="num_arrays">num_arrays: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@multi_sum_sq(data:Array[org.apache.mxnet.javaapi.NDArray],num_arrays:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Compute the sums of squares of multiple arrays


Defined in src/operator/contrib/multi_sum_sq.cc:L35</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Arrays</p></dd><dt class="param">num_arrays</dt><dd class="cmt"><p>number of input arrays.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#nag_mom_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="nag_mom_update(po:org.apache.mxnet.javaapi.nag_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="nag_mom_update(nag_mom_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">nag_mom_update</span><span class="params">(<span name="po">po: <a href="nag_mom_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.nag_mom_updateParam">nag_mom_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@nag_mom_update(po:org.apache.mxnet.javaapi.nag_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> Nesterov Accelerated Gradient( NAG) optimizer.
It updates the weights using the following formula,

.. math::
  v_t = \gamma v_{t-<span class="num">1</span>} + \eta * \nabla J(W_{t-<span class="num">1</span>} - \gamma v_{t-<span class="num">1</span>})\\
  W_t = W_{t-<span class="num">1</span>} - v_t

Where
:math:`\eta` is the learning rate of the optimizer
:math:`\gamma` is the decay rate of the momentum estimate
:math:`\v_t` is the update vector at time step `t`
:math:`\W_t` is the weight vector at time step `t`



Defined in src/operator/optimizer_op.cc:L725</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#nanprod" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="nanprod(po:org.apache.mxnet.javaapi.nanprodParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="nanprod(nanprodParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">nanprod</span><span class="params">(<span name="po">po: <a href="nanprodParam.html" class="extype" name="org.apache.mxnet.javaapi.nanprodParam">nanprodParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@nanprod(po:org.apache.mxnet.javaapi.nanprodParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the product of array elements over given axes treating Not a Numbers (``NaN``) as one.



Defined in src/operator/tensor/broadcast_reduce_prod_value.cc:L46</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#nansum" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="nansum(po:org.apache.mxnet.javaapi.nansumParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="nansum(nansumParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">nansum</span><span class="params">(<span name="po">po: <a href="nansumParam.html" class="extype" name="org.apache.mxnet.javaapi.nansumParam">nansumParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@nansum(po:org.apache.mxnet.javaapi.nansumParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the sum of array elements over given axes treating Not a Numbers (``NaN``) as zero.



Defined in src/operator/tensor/broadcast_reduce_sum_value.cc:L101</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#negative" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="negative(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="negative(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">negative</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@negative(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Numerical negative of the argument, element-wise.

The storage <span class="kw">type</span> of ``negative`` output depends upon the input storage <span class="kw">type</span>:

   - negative(default) = default
   - negative(row_sparse) = row_sparse
   - negative(csr) = csr</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#norm" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="norm(po:org.apache.mxnet.javaapi.normParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="norm(normParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">norm</span><span class="params">(<span name="po">po: <a href="normParam.html" class="extype" name="org.apache.mxnet.javaapi.normParam">normParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@norm(po:org.apache.mxnet.javaapi.normParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the norm on an NDArray.

This operator computes the norm on an NDArray <span class="kw">with</span> the specified axis, depending
on the value of the ord parameter. By default, it computes the L2 norm on the entire
array. Currently only ord=<span class="num">2</span> supports sparse ndarrays.

Examples::

  x = `[ `[ [<span class="num">1</span>, <span class="num">2</span>],
        [<span class="num">3</span>, <span class="num">4</span>] ],
       `[ [<span class="num">2</span>, <span class="num">2</span>],
        [<span class="num">5</span>, <span class="num">6</span>] ] ]

  norm(x, ord=<span class="num">2</span>, axis=<span class="num">1</span>) = `[ [<span class="num">3.1622777</span> <span class="num">4.472136</span> ]
                            [<span class="num">5.3851647</span> <span class="num">6.3245554</span>] ]

  norm(x, ord=<span class="num">1</span>, axis=<span class="num">1</span>) = `[ [<span class="num">4.</span>, <span class="num">6.</span>],
                            [<span class="num">7.</span>, <span class="num">8.</span>] ]

  rsp = x.cast_storage('row_sparse')

  norm(rsp) = [<span class="num">5.47722578</span>]

  csr = x.cast_storage(<span class="lit">'csr'</span>)

  norm(csr) = [<span class="num">5.47722578</span>]



Defined in src/operator/tensor/broadcast_reduce_norm_value.cc:L88</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#normal" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="normal(po:org.apache.mxnet.javaapi.normalParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="normal(normalParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">normal</span><span class="params">(<span name="po">po: <a href="normalParam.html" class="extype" name="org.apache.mxnet.javaapi.normalParam">normalParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@normal(po:org.apache.mxnet.javaapi.normalParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from a normal (Gaussian) distribution.

.. note:: The existing alias ``normal`` is deprecated.

Samples are distributed according to a normal distribution parametrized by *loc* (mean) and *scale*
(standard deviation).

Example::

   normal(loc=<span class="num">0</span>, scale=<span class="num">1</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">1.89171135</span>, -<span class="num">1.16881478</span>],
                                          [-<span class="num">1.23474145</span>,  <span class="num">1.55807114</span>] ]


Defined in src/operator/random/sample_op.cc:L112</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#one_hot" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="one_hot(po:org.apache.mxnet.javaapi.one_hotParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="one_hot(one_hotParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">one_hot</span><span class="params">(<span name="po">po: <a href="one_hotParam.html" class="extype" name="org.apache.mxnet.javaapi.one_hotParam">one_hotParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@one_hot(po:org.apache.mxnet.javaapi.one_hotParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns a one-hot array.

The locations represented by `indices` take value `on_value`, <span class="kw">while</span> all
other locations take value `off_value`.

`one_hot` operation <span class="kw">with</span> `indices` of shape ``(i0, i1)`` and `depth`  of ``d`` would result
in an output array of shape ``(i0, i1, d)`` <span class="kw">with</span>::

  output[i,j,:] = off_value
  output[i,j,indices[i,j] ] = on_value

Examples::

  one_hot([<span class="num">1</span>,<span class="num">0</span>,<span class="num">2</span>,<span class="num">0</span>], <span class="num">3</span>) = `[ [ <span class="num">0.</span>  <span class="num">1.</span>  <span class="num">0.</span>]
                           [ <span class="num">1.</span>  <span class="num">0.</span>  <span class="num">0.</span>]
                           [ <span class="num">0.</span>  <span class="num">0.</span>  <span class="num">1.</span>]
                           [ <span class="num">1.</span>  <span class="num">0.</span>  <span class="num">0.</span>] ]

  one_hot([<span class="num">1</span>,<span class="num">0</span>,<span class="num">2</span>,<span class="num">0</span>], <span class="num">3</span>, on_value=<span class="num">8</span>, off_value=<span class="num">1</span>,
          dtype=<span class="lit">'int32'</span>) = `[ [<span class="num">1</span> <span class="num">8</span> <span class="num">1</span>]
                            [<span class="num">8</span> <span class="num">1</span> <span class="num">1</span>]
                            [<span class="num">1</span> <span class="num">1</span> <span class="num">8</span>]
                            [<span class="num">8</span> <span class="num">1</span> <span class="num">1</span>] ]

  one_hot(`[ [<span class="num">1</span>,<span class="num">0</span>],[<span class="num">1</span>,<span class="num">0</span>],[<span class="num">2</span>,<span class="num">0</span>] ], <span class="num">3</span>) = `[ `[ [ <span class="num">0.</span>  <span class="num">1.</span>  <span class="num">0.</span>]
                                      [ <span class="num">1.</span>  <span class="num">0.</span>  <span class="num">0.</span>] ]

                                     `[ [ <span class="num">0.</span>  <span class="num">1.</span>  <span class="num">0.</span>]
                                      [ <span class="num">1.</span>  <span class="num">0.</span>  <span class="num">0.</span>] ]

                                     `[ [ <span class="num">0.</span>  <span class="num">0.</span>  <span class="num">1.</span>]
                                      [ <span class="num">1.</span>  <span class="num">0.</span>  <span class="num">0.</span>] ] ]


Defined in src/operator/tensor/indexing_op.cc:L882</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#ones_like" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="ones_like(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="ones_like(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">ones_like</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@ones_like(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Return an array of ones <span class="kw">with</span> the same shape and <span class="kw">type</span>
as the input array.

Examples::

  x = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
       [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]

  ones_like(x) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
                  [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#pad" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="pad(data:org.apache.mxnet.javaapi.NDArray,mode:String,pad_width:org.apache.mxnet.javaapi.Shape,constant_value:Double,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="pad(NDArray,String,Shape,Double,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">pad</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="mode">mode: <span class="extype" name="scala.Predef.String">String</span></span>, <span name="pad_width">pad_width: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="constant_value">constant_value: <span class="extype" name="java.lang.Double">Double</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@pad(data:org.apache.mxnet.javaapi.NDArray,mode:String,pad_width:org.apache.mxnet.javaapi.Shape,constant_value:Double,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Pads an input array <span class="kw">with</span> a constant or edge values of the array.

.. note:: `Pad` is deprecated. Use `pad` instead.

.. note:: Current implementation only supports <span class="num">4</span>D and <span class="num">5</span>D input arrays <span class="kw">with</span> padding applied
   only on axes <span class="num">1</span>, <span class="num">2</span> and <span class="num">3.</span> Expects axes <span class="num">4</span> and <span class="num">5</span> in `pad_width` to be zero.

This operation pads an input array <span class="kw">with</span> either a `constant_value` or edge values
along each axis of the input array. The amount of padding is specified by `pad_width`.

`pad_width` is a tuple of integer padding widths <span class="kw">for</span> each axis of the format
``(before_1, after_1, ... , before_N, after_N)``. The `pad_width` should be of length ``<span class="num">2</span>*N``
where ``N`` is the number of dimensions of the array.

For dimension ``N`` of the input array, ``before_N`` and ``after_N`` indicates how many values
to add before and after the elements of the array along dimension ``N``.
The widths of the higher two dimensions ``before_1``, ``after_1``, ``before_2``,
``after_2`` must be <span class="num">0.</span>

Example::

   x = `[ [`[ [  <span class="num">1.</span>   <span class="num">2.</span>   <span class="num">3.</span>]
          [  <span class="num">4.</span>   <span class="num">5.</span>   <span class="num">6.</span>] ]

         `[ [  <span class="num">7.</span>   <span class="num">8.</span>   <span class="num">9.</span>]
          [ <span class="num">10.</span>  <span class="num">11.</span>  <span class="num">12.</span>] ] ]


        `[ `[ [ <span class="num">11.</span>  <span class="num">12.</span>  <span class="num">13.</span>]
          [ <span class="num">14.</span>  <span class="num">15.</span>  <span class="num">16.</span>] ]

         `[ [ <span class="num">17.</span>  <span class="num">18.</span>  <span class="num">19.</span>]
          [ <span class="num">20.</span>  <span class="num">21.</span>  <span class="num">22.</span>] ] ] ]

   pad(x,mode=<span class="lit">"edge"</span>, pad_width=(<span class="num">0</span>,<span class="num">0</span>,<span class="num">0</span>,<span class="num">0</span>,<span class="num">1</span>,<span class="num">1</span>,<span class="num">1</span>,<span class="num">1</span>)) =

         `[ [`[ [  <span class="num">1.</span>   <span class="num">1.</span>   <span class="num">2.</span>   <span class="num">3.</span>   <span class="num">3.</span>]
            [  <span class="num">1.</span>   <span class="num">1.</span>   <span class="num">2.</span>   <span class="num">3.</span>   <span class="num">3.</span>]
            [  <span class="num">4.</span>   <span class="num">4.</span>   <span class="num">5.</span>   <span class="num">6.</span>   <span class="num">6.</span>]
            [  <span class="num">4.</span>   <span class="num">4.</span>   <span class="num">5.</span>   <span class="num">6.</span>   <span class="num">6.</span>] ]

           `[ [  <span class="num">7.</span>   <span class="num">7.</span>   <span class="num">8.</span>   <span class="num">9.</span>   <span class="num">9.</span>]
            [  <span class="num">7.</span>   <span class="num">7.</span>   <span class="num">8.</span>   <span class="num">9.</span>   <span class="num">9.</span>]
            [ <span class="num">10.</span>  <span class="num">10.</span>  <span class="num">11.</span>  <span class="num">12.</span>  <span class="num">12.</span>]
            [ <span class="num">10.</span>  <span class="num">10.</span>  <span class="num">11.</span>  <span class="num">12.</span>  <span class="num">12.</span>] ] ]


          `[ `[ [ <span class="num">11.</span>  <span class="num">11.</span>  <span class="num">12.</span>  <span class="num">13.</span>  <span class="num">13.</span>]
            [ <span class="num">11.</span>  <span class="num">11.</span>  <span class="num">12.</span>  <span class="num">13.</span>  <span class="num">13.</span>]
            [ <span class="num">14.</span>  <span class="num">14.</span>  <span class="num">15.</span>  <span class="num">16.</span>  <span class="num">16.</span>]
            [ <span class="num">14.</span>  <span class="num">14.</span>  <span class="num">15.</span>  <span class="num">16.</span>  <span class="num">16.</span>] ]

           `[ [ <span class="num">17.</span>  <span class="num">17.</span>  <span class="num">18.</span>  <span class="num">19.</span>  <span class="num">19.</span>]
            [ <span class="num">17.</span>  <span class="num">17.</span>  <span class="num">18.</span>  <span class="num">19.</span>  <span class="num">19.</span>]
            [ <span class="num">20.</span>  <span class="num">20.</span>  <span class="num">21.</span>  <span class="num">22.</span>  <span class="num">22.</span>]
            [ <span class="num">20.</span>  <span class="num">20.</span>  <span class="num">21.</span>  <span class="num">22.</span>  <span class="num">22.</span>] ] ] ]

   pad(x, mode=<span class="lit">"constant"</span>, constant_value=<span class="num">0</span>, pad_width=(<span class="num">0</span>,<span class="num">0</span>,<span class="num">0</span>,<span class="num">0</span>,<span class="num">1</span>,<span class="num">1</span>,<span class="num">1</span>,<span class="num">1</span>)) =

         `[ [`[ [  <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>   <span class="num">1.</span>   <span class="num">2.</span>   <span class="num">3.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>   <span class="num">4.</span>   <span class="num">5.</span>   <span class="num">6.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>] ]

           `[ [  <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>   <span class="num">7.</span>   <span class="num">8.</span>   <span class="num">9.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>  <span class="num">10.</span>  <span class="num">11.</span>  <span class="num">12.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>] ] ]


          `[ `[ [  <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>  <span class="num">11.</span>  <span class="num">12.</span>  <span class="num">13.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>  <span class="num">14.</span>  <span class="num">15.</span>  <span class="num">16.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>] ]

           `[ [  <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>  <span class="num">17.</span>  <span class="num">18.</span>  <span class="num">19.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>  <span class="num">20.</span>  <span class="num">21.</span>  <span class="num">22.</span>   <span class="num">0.</span>]
            [  <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>   <span class="num">0.</span>] ] ] ]




Defined in src/operator/pad.cc:L765</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>An n-dimensional input array.</p></dd><dt class="param">mode</dt><dd class="cmt"><p>Padding type to use. &quot;constant&quot; pads with <code>constant_value</code> &quot;edge&quot; pads using the edge values of the input array &quot;reflect&quot; pads by reflecting values with respect to the edges.</p></dd><dt class="param">pad_width</dt><dd class="cmt"><p>Widths of the padding regions applied to the edges of each axis. It is a tuple of integer padding widths for each axis of the format <code><code>(before_1, after_1, ... , before_N, after_N)</code></code>. It should be of length <code><code>2*N</code></code> where <code><code>N</code></code> is the number of dimensions of the array.This is equivalent to pad_width in numpy.pad, but flattened.</p></dd><dt class="param">constant_value</dt><dd class="cmt"><p>The value used for padding when <code>mode</code> is &quot;constant&quot;.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#pick" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="pick(po:org.apache.mxnet.javaapi.pickParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="pick(pickParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">pick</span><span class="params">(<span name="po">po: <a href="pickParam.html" class="extype" name="org.apache.mxnet.javaapi.pickParam">pickParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@pick(po:org.apache.mxnet.javaapi.pickParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Picks elements from an input array according to the input indices along the given axis.

Given an input array of shape ``(d0, d1)`` and indices of shape ``(i0,)``, the result will be
an output array of shape ``(i0,)`` <span class="kw">with</span>::

  output[i] = input[i, indices[i] ]

By default, <span class="kw">if</span> any index mentioned is too large, it is replaced by the index that addresses
the last element along an axis (the `clip` mode).

This function supports n-dimensional input and (n-<span class="num">1</span>)-dimensional indices arrays.

Examples::

  x = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>],
       [ <span class="num">3.</span>,  <span class="num">4.</span>],
       [ <span class="num">5.</span>,  <span class="num">6.</span>] ]

  <span class="cmt">// picks elements with specified indices along axis 0</span>
  pick(x, y=[<span class="num">0</span>,<span class="num">1</span>], <span class="num">0</span>) = [ <span class="num">1.</span>,  <span class="num">4.</span>]

  <span class="cmt">// picks elements with specified indices along axis 1</span>
  pick(x, y=[<span class="num">0</span>,<span class="num">1</span>,<span class="num">0</span>], <span class="num">1</span>) = [ <span class="num">1.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>]

  <span class="cmt">// picks elements with specified indices along axis 1 using 'wrap' mode</span>
  <span class="cmt">// to place indicies that would normally be out of bounds</span>
  pick(x, y=[<span class="num">2</span>,-<span class="num">1</span>,-<span class="num">2</span>], <span class="num">1</span>, mode=<span class="lit">'wrap'</span>) = [ <span class="num">1.</span>,  <span class="num">4.</span>,  <span class="num">5.</span>]

  y = `[ [ <span class="num">1.</span>],
       [ <span class="num">0.</span>],
       [ <span class="num">2.</span>] ]

  <span class="cmt">// picks elements with specified indices along axis 1 and dims are maintained</span>
  pick(x, y, <span class="num">1</span>, keepdims=True) = `[ [ <span class="num">2.</span>],
                                 [ <span class="num">3.</span>],
                                 [ <span class="num">6.</span>] ]



Defined in src/operator/tensor/broadcast_reduce_op_index.cc:L150</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#preloaded_multi_mp_sgd_mom_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="preloaded_multi_mp_sgd_mom_update(po:org.apache.mxnet.javaapi.preloaded_multi_mp_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="preloaded_multi_mp_sgd_mom_update(preloaded_multi_mp_sgd_mom_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">preloaded_multi_mp_sgd_mom_update</span><span class="params">(<span name="po">po: <a href="preloaded_multi_mp_sgd_mom_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.preloaded_multi_mp_sgd_mom_updateParam">preloaded_multi_mp_sgd_mom_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@preloaded_multi_mp_sgd_mom_update(po:org.apache.mxnet.javaapi.preloaded_multi_mp_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Momentum update function <span class="kw">for</span> multi-precision Stochastic Gradient Descent (SGD) optimizer.

Momentum update has better convergence rates on neural networks. Mathematically it looks
like below:

.. math::

  v_1 = \alpha * \nabla J(W_0)\\
  v_t = \gamma v_{t-<span class="num">1</span>} - \alpha * \nabla J(W_{t-<span class="num">1</span>})\\
  W_t = W_{t-<span class="num">1</span>} + v_t

It updates the weights using::

  v = momentum * v - learning_rate * gradient
  weight += v

Where the parameter ``momentum`` is the decay rate of momentum estimates at each epoch.



Defined in src/operator/contrib/preloaded_multi_sgd.cc:L199</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#preloaded_multi_mp_sgd_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="preloaded_multi_mp_sgd_update(po:org.apache.mxnet.javaapi.preloaded_multi_mp_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="preloaded_multi_mp_sgd_update(preloaded_multi_mp_sgd_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">preloaded_multi_mp_sgd_update</span><span class="params">(<span name="po">po: <a href="preloaded_multi_mp_sgd_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.preloaded_multi_mp_sgd_updateParam">preloaded_multi_mp_sgd_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@preloaded_multi_mp_sgd_update(po:org.apache.mxnet.javaapi.preloaded_multi_mp_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> multi-precision Stochastic Gradient Descent (SDG) optimizer.

It updates the weights using::

 weight = weight - learning_rate * (gradient + wd * weight)



Defined in src/operator/contrib/preloaded_multi_sgd.cc:L139</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#preloaded_multi_sgd_mom_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="preloaded_multi_sgd_mom_update(po:org.apache.mxnet.javaapi.preloaded_multi_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="preloaded_multi_sgd_mom_update(preloaded_multi_sgd_mom_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">preloaded_multi_sgd_mom_update</span><span class="params">(<span name="po">po: <a href="preloaded_multi_sgd_mom_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.preloaded_multi_sgd_mom_updateParam">preloaded_multi_sgd_mom_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@preloaded_multi_sgd_mom_update(po:org.apache.mxnet.javaapi.preloaded_multi_sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Momentum update function <span class="kw">for</span> Stochastic Gradient Descent (SGD) optimizer.

Momentum update has better convergence rates on neural networks. Mathematically it looks
like below:

.. math::

  v_1 = \alpha * \nabla J(W_0)\\
  v_t = \gamma v_{t-<span class="num">1</span>} - \alpha * \nabla J(W_{t-<span class="num">1</span>})\\
  W_t = W_{t-<span class="num">1</span>} + v_t

It updates the weights using::

  v = momentum * v - learning_rate * gradient
  weight += v

Where the parameter ``momentum`` is the decay rate of momentum estimates at each epoch.



Defined in src/operator/contrib/preloaded_multi_sgd.cc:L90</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#preloaded_multi_sgd_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="preloaded_multi_sgd_update(po:org.apache.mxnet.javaapi.preloaded_multi_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="preloaded_multi_sgd_update(preloaded_multi_sgd_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">preloaded_multi_sgd_update</span><span class="params">(<span name="po">po: <a href="preloaded_multi_sgd_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.preloaded_multi_sgd_updateParam">preloaded_multi_sgd_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@preloaded_multi_sgd_update(po:org.apache.mxnet.javaapi.preloaded_multi_sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> Stochastic Gradient Descent (SDG) optimizer.

It updates the weights using::

 weight = weight - learning_rate * (gradient + wd * weight)



Defined in src/operator/contrib/preloaded_multi_sgd.cc:L41</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#prod" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="prod(po:org.apache.mxnet.javaapi.prodParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="prod(prodParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">prod</span><span class="params">(<span name="po">po: <a href="prodParam.html" class="extype" name="org.apache.mxnet.javaapi.prodParam">prodParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@prod(po:org.apache.mxnet.javaapi.prodParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the product of array elements over given axes.

Defined in src/operator/tensor/./broadcast_reduce_op.h:L30</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#radians" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="radians(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="radians(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">radians</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@radians(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Converts each element of the input array from degrees to radians.

.. math::
   radians([<span class="num">0</span>, <span class="num">90</span>, <span class="num">180</span>, <span class="num">270</span>, <span class="num">360</span>]) = [<span class="num">0</span>, \pi/<span class="num">2</span>, \pi, <span class="num">3</span>\pi/<span class="num">2</span>, <span class="num">2</span>\pi]

The storage <span class="kw">type</span> of ``radians`` output depends upon the input storage <span class="kw">type</span>:

   - radians(default) = default
   - radians(row_sparse) = row_sparse
   - radians(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L351</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_exponential" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_exponential(po:org.apache.mxnet.javaapi.random_exponentialParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_exponential(random_exponentialParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_exponential</span><span class="params">(<span name="po">po: <a href="random_exponentialParam.html" class="extype" name="org.apache.mxnet.javaapi.random_exponentialParam">random_exponentialParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_exponential(po:org.apache.mxnet.javaapi.random_exponentialParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from an exponential distribution.

Samples are distributed according to an exponential distribution parametrized by *lambda* (rate).

Example::

   exponential(lam=<span class="num">4</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">0.0097189</span> ,  <span class="num">0.08999364</span>],
                                      [ <span class="num">0.04146638</span>,  <span class="num">0.31715935</span>] ]


Defined in src/operator/random/sample_op.cc:L136</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_gamma" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_gamma(po:org.apache.mxnet.javaapi.random_gammaParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_gamma(random_gammaParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_gamma</span><span class="params">(<span name="po">po: <a href="random_gammaParam.html" class="extype" name="org.apache.mxnet.javaapi.random_gammaParam">random_gammaParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_gamma(po:org.apache.mxnet.javaapi.random_gammaParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from a gamma distribution.

Samples are distributed according to a gamma distribution parametrized by *alpha* (shape) and *beta* (scale).

Example::

   gamma(alpha=<span class="num">9</span>, beta=<span class="num">0.5</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">7.10486984</span>,  <span class="num">3.37695289</span>],
                                            [ <span class="num">3.91697288</span>,  <span class="num">3.65933681</span>] ]


Defined in src/operator/random/sample_op.cc:L124</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_generalized_negative_binomial" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_generalized_negative_binomial(po:org.apache.mxnet.javaapi.random_generalized_negative_binomialParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_generalized_negative_binomial(random_generalized_negative_binomialParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_generalized_negative_binomial</span><span class="params">(<span name="po">po: <a href="random_generalized_negative_binomialParam.html" class="extype" name="org.apache.mxnet.javaapi.random_generalized_negative_binomialParam">random_generalized_negative_binomialParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_generalized_negative_binomial(po:org.apache.mxnet.javaapi.random_generalized_negative_binomialParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from a generalized negative binomial distribution.

Samples are distributed according to a generalized negative binomial distribution parametrized by
*mu* (mean) and *alpha* (dispersion). *alpha* is defined as *<span class="num">1</span>/k* where *k* is the failure limit of the
number of unsuccessful experiments (generalized to real numbers).
Samples will always be returned as a floating point data <span class="kw">type</span>.

Example::

   generalized_negative_binomial(mu=<span class="num">2.0</span>, alpha=<span class="num">0.3</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">2.</span>,  <span class="num">1.</span>],
                                                                    [ <span class="num">6.</span>,  <span class="num">4.</span>] ]


Defined in src/operator/random/sample_op.cc:L178</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_negative_binomial" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_negative_binomial(po:org.apache.mxnet.javaapi.random_negative_binomialParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_negative_binomial(random_negative_binomialParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_negative_binomial</span><span class="params">(<span name="po">po: <a href="random_negative_binomialParam.html" class="extype" name="org.apache.mxnet.javaapi.random_negative_binomialParam">random_negative_binomialParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_negative_binomial(po:org.apache.mxnet.javaapi.random_negative_binomialParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from a negative binomial distribution.

Samples are distributed according to a negative binomial distribution parametrized by
*k* (limit of unsuccessful experiments) and *p* (failure probability in each experiment).
Samples will always be returned as a floating point data <span class="kw">type</span>.

Example::

   negative_binomial(k=<span class="num">3</span>, p=<span class="num">0.4</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">4.</span>,  <span class="num">7.</span>],
                                                 [ <span class="num">2.</span>,  <span class="num">5.</span>] ]


Defined in src/operator/random/sample_op.cc:L163</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_normal" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_normal(po:org.apache.mxnet.javaapi.random_normalParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_normal(random_normalParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_normal</span><span class="params">(<span name="po">po: <a href="random_normalParam.html" class="extype" name="org.apache.mxnet.javaapi.random_normalParam">random_normalParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_normal(po:org.apache.mxnet.javaapi.random_normalParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from a normal (Gaussian) distribution.

.. note:: The existing alias ``normal`` is deprecated.

Samples are distributed according to a normal distribution parametrized by *loc* (mean) and *scale*
(standard deviation).

Example::

   normal(loc=<span class="num">0</span>, scale=<span class="num">1</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">1.89171135</span>, -<span class="num">1.16881478</span>],
                                          [-<span class="num">1.23474145</span>,  <span class="num">1.55807114</span>] ]


Defined in src/operator/random/sample_op.cc:L112</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_pdf_dirichlet" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_pdf_dirichlet(sample:org.apache.mxnet.javaapi.NDArray,alpha:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_pdf_dirichlet(NDArray,NDArray,Boolean,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_pdf_dirichlet</span><span class="params">(<span name="sample">sample: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="alpha">alpha: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="is_log">is_log: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_pdf_dirichlet(sample:org.apache.mxnet.javaapi.NDArray,alpha:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the value of the PDF of *sample* of
Dirichlet distributions <span class="kw">with</span> parameter *alpha*.

The shape of *alpha* must <span class="kw">match</span> the leftmost subshape of *sample*.  That is, *sample*
can have the same shape as *alpha*, in which <span class="kw">case</span> the output contains one density per
distribution, or *sample* can be a tensor of tensors <span class="kw">with</span> that shape, in which <span class="kw">case</span>
the output is a tensor of densities such that the densities at index *i* in the output
are given by the samples at index *i* in *sample* parameterized by the value of *alpha*
at index *i*.

Examples::

    random_pdf_dirichlet(sample=`[ [<span class="num">1</span>,<span class="num">2</span>],[<span class="num">2</span>,<span class="num">3</span>],[<span class="num">3</span>,<span class="num">4</span>] ], alpha=[<span class="num">2.5</span>, <span class="num">2.5</span>]) =
        [<span class="num">38.413498</span>, <span class="num">199.60245</span>, <span class="num">564.56085</span>]

    sample = `[ `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>], [<span class="num">10</span>, <span class="num">20</span>, <span class="num">30</span>], [<span class="num">100</span>, <span class="num">200</span>, <span class="num">300</span>] ],
              `[ [<span class="num">0.1</span>, <span class="num">0.2</span>, <span class="num">0.3</span>], [<span class="num">0.01</span>, <span class="num">0.02</span>, <span class="num">0.03</span>], [<span class="num">0.001</span>, <span class="num">0.002</span>, <span class="num">0.003</span>] ] ]

    random_pdf_dirichlet(sample=sample, alpha=[<span class="num">0.1</span>, <span class="num">0.4</span>, <span class="num">0.9</span>]) =
        `[ [<span class="num">2.3257459e-02</span>, <span class="num">5.8420084e-04</span>, <span class="num">1.4674458e-05</span>],
         [<span class="num">9.2589635e-01</span>, <span class="num">3.6860607e+01</span>, <span class="num">1.4674468e+03</span>] ]


Defined in src/operator/random/pdf_op.cc:L315</pre></div><dl class="paramcmts block"><dt class="param">sample</dt><dd class="cmt"><p>Samples from the distributions.</p></dd><dt class="param">alpha</dt><dd class="cmt"><p>Concentration parameters of the distributions.</p></dd><dt class="param">is_log</dt><dd class="cmt"><p>If set, compute the density of the log-probability instead of the probability.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_pdf_exponential" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_pdf_exponential(sample:org.apache.mxnet.javaapi.NDArray,lam:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_pdf_exponential(NDArray,NDArray,Boolean,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_pdf_exponential</span><span class="params">(<span name="sample">sample: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="lam">lam: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="is_log">is_log: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_pdf_exponential(sample:org.apache.mxnet.javaapi.NDArray,lam:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the value of the PDF of *sample* of
exponential distributions <span class="kw">with</span> parameters *lam* (rate).

The shape of *lam* must <span class="kw">match</span> the leftmost subshape of *sample*.  That is, *sample*
can have the same shape as *lam*, in which <span class="kw">case</span> the output contains one density per
distribution, or *sample* can be a tensor of tensors <span class="kw">with</span> that shape, in which <span class="kw">case</span>
the output is a tensor of densities such that the densities at index *i* in the output
are given by the samples at index *i* in *sample* parameterized by the value of *lam*
at index *i*.

Examples::

  random_pdf_exponential(sample=`[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>] ], lam=[<span class="num">1</span>]) =
      `[ [<span class="num">0.36787945</span>, <span class="num">0.13533528</span>, <span class="num">0.04978707</span>] ]

  sample = `[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>],
            [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>],
            [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>] ]

  random_pdf_exponential(sample=sample, lam=[<span class="num">1</span>,<span class="num">0.5</span>,<span class="num">0.25</span>]) =
      `[ [<span class="num">0.36787945</span>, <span class="num">0.13533528</span>, <span class="num">0.04978707</span>],
       [<span class="num">0.30326533</span>, <span class="num">0.18393973</span>, <span class="num">0.11156508</span>],
       [<span class="num">0.1947002</span>,  <span class="num">0.15163267</span>, <span class="num">0.11809164</span>] ]


Defined in src/operator/random/pdf_op.cc:L304</pre></div><dl class="paramcmts block"><dt class="param">sample</dt><dd class="cmt"><p>Samples from the distributions.</p></dd><dt class="param">lam</dt><dd class="cmt"><p>Lambda (rate) parameters of the distributions.</p></dd><dt class="param">is_log</dt><dd class="cmt"><p>If set, compute the density of the log-probability instead of the probability.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_pdf_gamma" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_pdf_gamma(sample:org.apache.mxnet.javaapi.NDArray,alpha:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,beta:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_pdf_gamma(NDArray,NDArray,Boolean,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_pdf_gamma</span><span class="params">(<span name="sample">sample: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="alpha">alpha: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="is_log">is_log: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="beta">beta: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_pdf_gamma(sample:org.apache.mxnet.javaapi.NDArray,alpha:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,beta:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the value of the PDF of *sample* of
gamma distributions <span class="kw">with</span> parameters *alpha* (shape) and *beta* (rate).

*alpha* and *beta* must have the same shape, which must <span class="kw">match</span> the leftmost subshape
of *sample*.  That is, *sample* can have the same shape as *alpha* and *beta*, in which
<span class="kw">case</span> the output contains one density per distribution, or *sample* can be a tensor
of tensors <span class="kw">with</span> that shape, in which <span class="kw">case</span> the output is a tensor of densities such that
the densities at index *i* in the output are given by the samples at index *i* in *sample*
parameterized by the values of *alpha* and *beta* at index *i*.

Examples::

  random_pdf_gamma(sample=`[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>,<span class="num">5</span>] ], alpha=[<span class="num">5</span>], beta=[<span class="num">1</span>]) =
      `[ [<span class="num">0.01532831</span>, <span class="num">0.09022352</span>, <span class="num">0.16803136</span>, <span class="num">0.19536681</span>, <span class="num">0.17546739</span>] ]

  sample = `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>, <span class="num">5</span>],
            [<span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>, <span class="num">5</span>, <span class="num">6</span>],
            [<span class="num">3</span>, <span class="num">4</span>, <span class="num">5</span>, <span class="num">6</span>, <span class="num">7</span>] ]

  random_pdf_gamma(sample=sample, alpha=[<span class="num">5</span>,<span class="num">6</span>,<span class="num">7</span>], beta=[<span class="num">1</span>,<span class="num">1</span>,<span class="num">1</span>]) =
      `[ [<span class="num">0.01532831</span>, <span class="num">0.09022352</span>, <span class="num">0.16803136</span>, <span class="num">0.19536681</span>, <span class="num">0.17546739</span>],
       [<span class="num">0.03608941</span>, <span class="num">0.10081882</span>, <span class="num">0.15629345</span>, <span class="num">0.17546739</span>, <span class="num">0.16062315</span>],
       [<span class="num">0.05040941</span>, <span class="num">0.10419563</span>, <span class="num">0.14622283</span>, <span class="num">0.16062315</span>, <span class="num">0.14900276</span>] ]


Defined in src/operator/random/pdf_op.cc:L302</pre></div><dl class="paramcmts block"><dt class="param">sample</dt><dd class="cmt"><p>Samples from the distributions.</p></dd><dt class="param">alpha</dt><dd class="cmt"><p>Alpha (shape) parameters of the distributions.</p></dd><dt class="param">is_log</dt><dd class="cmt"><p>If set, compute the density of the log-probability instead of the probability.</p></dd><dt class="param">beta</dt><dd class="cmt"><p>Beta (scale) parameters of the distributions.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_pdf_generalized_negative_binomial" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_pdf_generalized_negative_binomial(sample:org.apache.mxnet.javaapi.NDArray,mu:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,alpha:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_pdf_generalized_negative_binomial(NDArray,NDArray,Boolean,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_pdf_generalized_negative_binomial</span><span class="params">(<span name="sample">sample: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="mu">mu: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="is_log">is_log: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="alpha">alpha: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_pdf_generalized_negative_binomial(sample:org.apache.mxnet.javaapi.NDArray,mu:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,alpha:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the value of the PDF of *sample* of
generalized negative binomial distributions <span class="kw">with</span> parameters *mu* (mean)
and *alpha* (dispersion).  This can be understood as a reparameterization of
the negative binomial, where *k* = *<span class="num">1</span> / alpha* and *p* = *<span class="num">1</span> / (mu \* alpha + <span class="num">1</span>)*.

*mu* and *alpha* must have the same shape, which must <span class="kw">match</span> the leftmost subshape
of *sample*.  That is, *sample* can have the same shape as *mu* and *alpha*, in which
<span class="kw">case</span> the output contains one density per distribution, or *sample* can be a tensor
of tensors <span class="kw">with</span> that shape, in which <span class="kw">case</span> the output is a tensor of densities such that
the densities at index *i* in the output are given by the samples at index *i* in *sample*
parameterized by the values of *mu* and *alpha* at index *i*.

Examples::

    random_pdf_generalized_negative_binomial(sample=`[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>] ], alpha=[<span class="num">1</span>], mu=[<span class="num">1</span>]) =
        `[ [<span class="num">0.25</span>, <span class="num">0.125</span>, <span class="num">0.0625</span>, <span class="num">0.03125</span>] ]

    sample = `[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>],
              [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>] ]
    random_pdf_generalized_negative_binomial(sample=sample, alpha=[<span class="num">1</span>, <span class="num">0.6666</span>], mu=[<span class="num">1</span>, <span class="num">1.5</span>]) =
        `[ [<span class="num">0.25</span>,       <span class="num">0.125</span>,      <span class="num">0.0625</span>,     <span class="num">0.03125</span>   ],
         [<span class="num">0.26517063</span>, <span class="num">0.16573331</span>, <span class="num">0.09667706</span>, <span class="num">0.05437994</span>] ]


Defined in src/operator/random/pdf_op.cc:L313</pre></div><dl class="paramcmts block"><dt class="param">sample</dt><dd class="cmt"><p>Samples from the distributions.</p></dd><dt class="param">mu</dt><dd class="cmt"><p>Means of the distributions.</p></dd><dt class="param">is_log</dt><dd class="cmt"><p>If set, compute the density of the log-probability instead of the probability.</p></dd><dt class="param">alpha</dt><dd class="cmt"><p>Alpha (dispersion) parameters of the distributions.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_pdf_negative_binomial" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_pdf_negative_binomial(sample:org.apache.mxnet.javaapi.NDArray,k:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,p:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_pdf_negative_binomial(NDArray,NDArray,Boolean,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_pdf_negative_binomial</span><span class="params">(<span name="sample">sample: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="k">k: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="is_log">is_log: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="p">p: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_pdf_negative_binomial(sample:org.apache.mxnet.javaapi.NDArray,k:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,p:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the value of the PDF of samples of
negative binomial distributions <span class="kw">with</span> parameters *k* (failure limit) and *p* (failure probability).

*k* and *p* must have the same shape, which must <span class="kw">match</span> the leftmost subshape
of *sample*.  That is, *sample* can have the same shape as *k* and *p*, in which
<span class="kw">case</span> the output contains one density per distribution, or *sample* can be a tensor
of tensors <span class="kw">with</span> that shape, in which <span class="kw">case</span> the output is a tensor of densities such that
the densities at index *i* in the output are given by the samples at index *i* in *sample*
parameterized by the values of *k* and *p* at index *i*.

Examples::

    random_pdf_negative_binomial(sample=`[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>] ], k=[<span class="num">1</span>], p=a[<span class="num">0.5</span>]) =
        `[ [<span class="num">0.25</span>, <span class="num">0.125</span>, <span class="num">0.0625</span>, <span class="num">0.03125</span>] ]

    # Note that k may be real-valued
    sample = `[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>],
              [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>] ]
    random_pdf_negative_binomial(sample=sample, k=[<span class="num">1</span>, <span class="num">1.5</span>], p=[<span class="num">0.5</span>, <span class="num">0.5</span>]) =
        `[ [<span class="num">0.25</span>,       <span class="num">0.125</span>,      <span class="num">0.0625</span>,     <span class="num">0.03125</span>   ],
         [<span class="num">0.26516506</span>, <span class="num">0.16572815</span>, <span class="num">0.09667476</span>, <span class="num">0.05437956</span>] ]


Defined in src/operator/random/pdf_op.cc:L309</pre></div><dl class="paramcmts block"><dt class="param">sample</dt><dd class="cmt"><p>Samples from the distributions.</p></dd><dt class="param">k</dt><dd class="cmt"><p>Limits of unsuccessful experiments.</p></dd><dt class="param">is_log</dt><dd class="cmt"><p>If set, compute the density of the log-probability instead of the probability.</p></dd><dt class="param">p</dt><dd class="cmt"><p>Failure probabilities in each experiment.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_pdf_normal" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_pdf_normal(sample:org.apache.mxnet.javaapi.NDArray,mu:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,sigma:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_pdf_normal(NDArray,NDArray,Boolean,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_pdf_normal</span><span class="params">(<span name="sample">sample: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="mu">mu: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="is_log">is_log: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="sigma">sigma: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_pdf_normal(sample:org.apache.mxnet.javaapi.NDArray,mu:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,sigma:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the value of the PDF of *sample* of
normal distributions <span class="kw">with</span> parameters *mu* (mean) and *sigma* (standard deviation).

*mu* and *sigma* must have the same shape, which must <span class="kw">match</span> the leftmost subshape
of *sample*.  That is, *sample* can have the same shape as *mu* and *sigma*, in which
<span class="kw">case</span> the output contains one density per distribution, or *sample* can be a tensor
of tensors <span class="kw">with</span> that shape, in which <span class="kw">case</span> the output is a tensor of densities such that
the densities at index *i* in the output are given by the samples at index *i* in *sample*
parameterized by the values of *mu* and *sigma* at index *i*.

Examples::

    sample = `[ [-<span class="num">2</span>, -<span class="num">1</span>, <span class="num">0</span>, <span class="num">1</span>, <span class="num">2</span>] ]
    random_pdf_normal(sample=sample, mu=[<span class="num">0</span>], sigma=[<span class="num">1</span>]) =
        `[ [<span class="num">0.05399097</span>, <span class="num">0.24197073</span>, <span class="num">0.3989423</span>, <span class="num">0.24197073</span>, <span class="num">0.05399097</span>] ]

    random_pdf_normal(sample=sample*<span class="num">2</span>, mu=[<span class="num">0</span>,<span class="num">0</span>], sigma=[<span class="num">1</span>,<span class="num">2</span>]) =
        `[ [<span class="num">0.05399097</span>, <span class="num">0.24197073</span>, <span class="num">0.3989423</span>,  <span class="num">0.24197073</span>, <span class="num">0.05399097</span>],
         [<span class="num">0.12098537</span>, <span class="num">0.17603266</span>, <span class="num">0.19947115</span>, <span class="num">0.17603266</span>, <span class="num">0.12098537</span>] ]


Defined in src/operator/random/pdf_op.cc:L299</pre></div><dl class="paramcmts block"><dt class="param">sample</dt><dd class="cmt"><p>Samples from the distributions.</p></dd><dt class="param">mu</dt><dd class="cmt"><p>Means of the distributions.</p></dd><dt class="param">is_log</dt><dd class="cmt"><p>If set, compute the density of the log-probability instead of the probability.</p></dd><dt class="param">sigma</dt><dd class="cmt"><p>Standard deviations of the distributions.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_pdf_poisson" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_pdf_poisson(sample:org.apache.mxnet.javaapi.NDArray,lam:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_pdf_poisson(NDArray,NDArray,Boolean,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_pdf_poisson</span><span class="params">(<span name="sample">sample: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="lam">lam: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="is_log">is_log: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_pdf_poisson(sample:org.apache.mxnet.javaapi.NDArray,lam:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the value of the PDF of *sample* of
Poisson distributions <span class="kw">with</span> parameters *lam* (rate).

The shape of *lam* must <span class="kw">match</span> the leftmost subshape of *sample*.  That is, *sample*
can have the same shape as *lam*, in which <span class="kw">case</span> the output contains one density per
distribution, or *sample* can be a tensor of tensors <span class="kw">with</span> that shape, in which <span class="kw">case</span>
the output is a tensor of densities such that the densities at index *i* in the output
are given by the samples at index *i* in *sample* parameterized by the value of *lam*
at index *i*.

Examples::

    random_pdf_poisson(sample=`[ [<span class="num">0</span>,<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>] ], lam=[<span class="num">1</span>]) =
        `[ [<span class="num">0.36787945</span>, <span class="num">0.36787945</span>, <span class="num">0.18393973</span>, <span class="num">0.06131324</span>] ]

    sample = `[ [<span class="num">0</span>,<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>],
              [<span class="num">0</span>,<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>],
              [<span class="num">0</span>,<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>] ]

    random_pdf_poisson(sample=sample, lam=[<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>]) =
        `[ [<span class="num">0.36787945</span>, <span class="num">0.36787945</span>, <span class="num">0.18393973</span>, <span class="num">0.06131324</span>],
         [<span class="num">0.13533528</span>, <span class="num">0.27067056</span>, <span class="num">0.27067056</span>, <span class="num">0.18044704</span>],
         [<span class="num">0.04978707</span>, <span class="num">0.14936121</span>, <span class="num">0.22404182</span>, <span class="num">0.22404182</span>] ]


Defined in src/operator/random/pdf_op.cc:L306</pre></div><dl class="paramcmts block"><dt class="param">sample</dt><dd class="cmt"><p>Samples from the distributions.</p></dd><dt class="param">lam</dt><dd class="cmt"><p>Lambda (rate) parameters of the distributions.</p></dd><dt class="param">is_log</dt><dd class="cmt"><p>If set, compute the density of the log-probability instead of the probability.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_pdf_uniform" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_pdf_uniform(sample:org.apache.mxnet.javaapi.NDArray,low:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,high:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_pdf_uniform(NDArray,NDArray,Boolean,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_pdf_uniform</span><span class="params">(<span name="sample">sample: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="low">low: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="is_log">is_log: <span class="extype" name="java.lang.Boolean">Boolean</span></span>, <span name="high">high: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_pdf_uniform(sample:org.apache.mxnet.javaapi.NDArray,low:org.apache.mxnet.javaapi.NDArray,is_log:Boolean,high:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the value of the PDF of *sample* of
uniform distributions on the intervals given by *[low,high)*.

*low* and *high* must have the same shape, which must <span class="kw">match</span> the leftmost subshape
of *sample*.  That is, *sample* can have the same shape as *low* and *high*, in which
<span class="kw">case</span> the output contains one density per distribution, or *sample* can be a tensor
of tensors <span class="kw">with</span> that shape, in which <span class="kw">case</span> the output is a tensor of densities such that
the densities at index *i* in the output are given by the samples at index *i* in *sample*
parameterized by the values of *low* and *high* at index *i*.

Examples::

    random_pdf_uniform(sample=`[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>] ], low=[<span class="num">0</span>], high=[<span class="num">10</span>]) = [<span class="num">0.1</span>, <span class="num">0.1</span>, <span class="num">0.1</span>, <span class="num">0.1</span>]

    sample = `[ `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>],
               [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>] ],
              `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>],
               [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>] ] ]
    low  = `[ [<span class="num">0</span>, <span class="num">0</span>],
            [<span class="num">0</span>, <span class="num">0</span>] ]
    high = `[ [ <span class="num">5</span>, <span class="num">10</span>],
            [<span class="num">15</span>, <span class="num">20</span>] ]
    random_pdf_uniform(sample=sample, low=low, high=high) =
        `[ `[ [<span class="num">0.2</span>,        <span class="num">0.2</span>,        <span class="num">0.2</span>    ],
          [<span class="num">0.1</span>,        <span class="num">0.1</span>,        <span class="num">0.1</span>    ] ],
         `[ [<span class="num">0.06667</span>,    <span class="num">0.06667</span>,    <span class="num">0.06667</span>],
          [<span class="num">0.05</span>,       <span class="num">0.05</span>,       <span class="num">0.05</span>   ] ] ]



Defined in src/operator/random/pdf_op.cc:L297</pre></div><dl class="paramcmts block"><dt class="param">sample</dt><dd class="cmt"><p>Samples from the distributions.</p></dd><dt class="param">low</dt><dd class="cmt"><p>Lower bounds of the distributions.</p></dd><dt class="param">is_log</dt><dd class="cmt"><p>If set, compute the density of the log-probability instead of the probability.</p></dd><dt class="param">high</dt><dd class="cmt"><p>Upper bounds of the distributions.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_poisson" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_poisson(po:org.apache.mxnet.javaapi.random_poissonParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_poisson(random_poissonParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_poisson</span><span class="params">(<span name="po">po: <a href="random_poissonParam.html" class="extype" name="org.apache.mxnet.javaapi.random_poissonParam">random_poissonParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_poisson(po:org.apache.mxnet.javaapi.random_poissonParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from a Poisson distribution.

Samples are distributed according to a Poisson distribution parametrized by *lambda* (rate).
Samples will always be returned as a floating point data <span class="kw">type</span>.

Example::

   poisson(lam=<span class="num">4</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">5.</span>,  <span class="num">2.</span>],
                                  [ <span class="num">4.</span>,  <span class="num">6.</span>] ]


Defined in src/operator/random/sample_op.cc:L149</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_randint" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_randint(po:org.apache.mxnet.javaapi.random_randintParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_randint(random_randintParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_randint</span><span class="params">(<span name="po">po: <a href="random_randintParam.html" class="extype" name="org.apache.mxnet.javaapi.random_randintParam">random_randintParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_randint(po:org.apache.mxnet.javaapi.random_randintParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from a discrete uniform distribution.

Samples are uniformly distributed over the half-open interval *[low, high)*
(includes *low*, but excludes *high*).

Example::

   randint(low=<span class="num">0</span>, high=<span class="num">5</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">0</span>,  <span class="num">2</span>],
                                          [ <span class="num">3</span>,  <span class="num">1</span>] ]



Defined in src/operator/random/sample_op.cc:L193</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#random_uniform" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="random_uniform(po:org.apache.mxnet.javaapi.random_uniformParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="random_uniform(random_uniformParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">random_uniform</span><span class="params">(<span name="po">po: <a href="random_uniformParam.html" class="extype" name="org.apache.mxnet.javaapi.random_uniformParam">random_uniformParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@random_uniform(po:org.apache.mxnet.javaapi.random_uniformParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from a uniform distribution.

.. note:: The existing alias ``uniform`` is deprecated.

Samples are uniformly distributed over the half-open interval *[low, high)*
(includes *low*, but excludes *high*).

Example::

   uniform(low=<span class="num">0</span>, high=<span class="num">1</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">0.60276335</span>,  <span class="num">0.85794562</span>],
                                          [ <span class="num">0.54488319</span>,  <span class="num">0.84725171</span>] ]



Defined in src/operator/random/sample_op.cc:L95</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#ravel_multi_index" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="ravel_multi_index(data:org.apache.mxnet.javaapi.NDArray,shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="ravel_multi_index(NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">ravel_multi_index</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="shape">shape: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@ravel_multi_index(data:org.apache.mxnet.javaapi.NDArray,shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Converts a batch of index arrays into an array of flat indices. The operator follows numpy conventions so a single multi index is given by a column of the input matrix. The leading dimension may be left unspecified by using -<span class="num">1</span> as placeholder.

Examples::

   A = `[ [<span class="num">3</span>,<span class="num">6</span>,<span class="num">6</span>],[<span class="num">4</span>,<span class="num">5</span>,<span class="num">1</span>] ]
   ravel(A, shape=(<span class="num">7</span>,<span class="num">6</span>)) = [<span class="num">22</span>,<span class="num">41</span>,<span class="num">37</span>]
   ravel(A, shape=(-<span class="num">1</span>,<span class="num">6</span>)) = [<span class="num">22</span>,<span class="num">41</span>,<span class="num">37</span>]



Defined in src/operator/tensor/ravel.cc:L41</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Batch of multi-indices</p></dd><dt class="param">shape</dt><dd class="cmt"><p>Shape of the array into which the multi-indices apply.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#rcbrt" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="rcbrt(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="rcbrt(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">rcbrt</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@rcbrt(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise inverse cube-root value of the input.

.. math::
   rcbrt(x) = <span class="num">1</span>/\sqrt[<span class="num">3</span>]{x}

Example::

   rcbrt([<span class="num">1</span>,<span class="num">8</span>,-<span class="num">125</span>]) = [<span class="num">1.0</span>, <span class="num">0.5</span>, -<span class="num">0.2</span>]



Defined in src/operator/tensor/elemwise_unary_op_pow.cc:L323</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#reciprocal" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="reciprocal(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="reciprocal(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">reciprocal</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@reciprocal(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the reciprocal of the argument, element-wise.

Calculates <span class="num">1</span>/x.

Example::

    reciprocal([-<span class="num">2</span>, <span class="num">1</span>, <span class="num">3</span>, <span class="num">1.6</span>, <span class="num">0.2</span>]) = [-<span class="num">0.5</span>, <span class="num">1.0</span>, <span class="num">0.33333334</span>, <span class="num">0.625</span>, <span class="num">5.0</span>]



Defined in src/operator/tensor/elemwise_unary_op_pow.cc:L43</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#relu" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="relu(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="relu(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">relu</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@relu(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes rectified linear activation.

.. math::
   max(features, <span class="num">0</span>)

The storage <span class="kw">type</span> of ``relu`` output depends upon the input storage <span class="kw">type</span>:

   - relu(default) = default
   - relu(row_sparse) = row_sparse
   - relu(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L85</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#repeat" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="repeat(data:org.apache.mxnet.javaapi.NDArray,repeats:Integer,axis:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="repeat(NDArray,Integer,Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">repeat</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="repeats">repeats: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="axis">axis: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@repeat(data:org.apache.mxnet.javaapi.NDArray,repeats:Integer,axis:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Repeats elements of an array.
By default, ``repeat`` flattens the input array into <span class="num">1</span>-D and then repeats the
elements::
  x = `[ [ <span class="num">1</span>, <span class="num">2</span>],
       [ <span class="num">3</span>, <span class="num">4</span>] ]
  repeat(x, repeats=<span class="num">2</span>) = [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">4.</span>]
The parameter ``axis`` specifies the axis along which to perform repeat::
  repeat(x, repeats=<span class="num">2</span>, axis=<span class="num">1</span>) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>],
                                  [ <span class="num">3.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">4.</span>] ]
  repeat(x, repeats=<span class="num">2</span>, axis=<span class="num">0</span>) = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>],
                                  [ <span class="num">1.</span>,  <span class="num">2.</span>],
                                  [ <span class="num">3.</span>,  <span class="num">4.</span>],
                                  [ <span class="num">3.</span>,  <span class="num">4.</span>] ]
  repeat(x, repeats=<span class="num">2</span>, axis=-<span class="num">1</span>) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>],
                                   [ <span class="num">3.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">4.</span>] ]


Defined in src/operator/tensor/matrix_op.cc:L743</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data array</p></dd><dt class="param">repeats</dt><dd class="cmt"><p>The number of repetitions for each element.</p></dd><dt class="param">axis</dt><dd class="cmt"><p>The axis along which to repeat values. The negative numbers are interpreted counting from the backward. By default, use the flattened input array, and return a flat output array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#reset_arrays" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="reset_arrays(data:Array[org.apache.mxnet.javaapi.NDArray],num_arrays:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="reset_arrays(Array[NDArray],Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">reset_arrays</span><span class="params">(<span name="data">data: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>, <span name="num_arrays">num_arrays: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@reset_arrays(data:Array[org.apache.mxnet.javaapi.NDArray],num_arrays:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre><span class="std">Set</span> to zero multiple arrays


Defined in src/operator/contrib/reset_arrays.cc:L35</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Arrays</p></dd><dt class="param">num_arrays</dt><dd class="cmt"><p>number of input arrays.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#reshape" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="reshape(po:org.apache.mxnet.javaapi.reshapeParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="reshape(reshapeParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">reshape</span><span class="params">(<span name="po">po: <a href="reshapeParam.html" class="extype" name="org.apache.mxnet.javaapi.reshapeParam">reshapeParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@reshape(po:org.apache.mxnet.javaapi.reshapeParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Reshapes the input array.
.. note:: ``Reshape`` is deprecated, use ``reshape``
Given an array and a shape, <span class="kw">this</span> function returns a copy of the array in the <span class="kw">new</span> shape.
The shape is a tuple of integers such as (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>). The size of the <span class="kw">new</span> shape should be same as the size of the input array.
Example::
  reshape([<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>], shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [<span class="num">1</span>,<span class="num">2</span>], [<span class="num">3</span>,<span class="num">4</span>] ]
<span class="std">Some</span> dimensions of the shape can take special values from the set {<span class="num">0</span>, -<span class="num">1</span>, -<span class="num">2</span>, -<span class="num">3</span>, -<span class="num">4</span>}. The significance of each is explained below:
- ``<span class="num">0</span>``  copy <span class="kw">this</span> dimension from the input to the output shape.
  Example::
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (<span class="num">4</span>,<span class="num">0</span>,<span class="num">2</span>), output shape = (<span class="num">4</span>,<span class="num">3</span>,<span class="num">2</span>)
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (<span class="num">2</span>,<span class="num">0</span>,<span class="num">0</span>), output shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>)
- ``-<span class="num">1</span>`` infers the dimension of the output shape by using the remainder of the input dimensions
  keeping the size of the <span class="kw">new</span> array same as that of the input array.
  At most one dimension of shape can be -<span class="num">1.</span>
  Example::
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (<span class="num">6</span>,<span class="num">1</span>,-<span class="num">1</span>), output shape = (<span class="num">6</span>,<span class="num">1</span>,<span class="num">4</span>)
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (<span class="num">3</span>,-<span class="num">1</span>,<span class="num">8</span>), output shape = (<span class="num">3</span>,<span class="num">1</span>,<span class="num">8</span>)
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape=(-<span class="num">1</span>,), output shape = (<span class="num">24</span>,)
- ``-<span class="num">2</span>`` copy all/remainder of the input dimensions to the output shape.
  Example::
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (-<span class="num">2</span>,), output shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>)
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (<span class="num">2</span>,-<span class="num">2</span>), output shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>)
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (-<span class="num">2</span>,<span class="num">1</span>,<span class="num">1</span>), output shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>,<span class="num">1</span>,<span class="num">1</span>)
- ``-<span class="num">3</span>`` use the product of two consecutive dimensions of the input shape as the output dimension.
  Example::
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (-<span class="num">3</span>,<span class="num">4</span>), output shape = (<span class="num">6</span>,<span class="num">4</span>)
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>,<span class="num">5</span>), shape = (-<span class="num">3</span>,-<span class="num">3</span>), output shape = (<span class="num">6</span>,<span class="num">20</span>)
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (<span class="num">0</span>,-<span class="num">3</span>), output shape = (<span class="num">2</span>,<span class="num">12</span>)
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (-<span class="num">3</span>,-<span class="num">2</span>), output shape = (<span class="num">6</span>,<span class="num">4</span>)
- ``-<span class="num">4</span>`` split one dimension of the input into two dimensions passed subsequent to -<span class="num">4</span> in shape (can contain -<span class="num">1</span>).
  Example::
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (-<span class="num">4</span>,<span class="num">1</span>,<span class="num">2</span>,-<span class="num">2</span>), output shape =(<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>)
  - input shape = (<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>), shape = (<span class="num">2</span>,-<span class="num">4</span>,-<span class="num">1</span>,<span class="num">3</span>,-<span class="num">2</span>), output shape = (<span class="num">2</span>,<span class="num">1</span>,<span class="num">3</span>,<span class="num">4</span>)
If the argument `reverse` is set to <span class="num">1</span>, then the special values are inferred from right to left.
  Example::
  - without reverse=<span class="num">1</span>, <span class="kw">for</span> input shape = (<span class="num">10</span>,<span class="num">5</span>,<span class="num">4</span>), shape = (-<span class="num">1</span>,<span class="num">0</span>), output shape would be (<span class="num">40</span>,<span class="num">5</span>)
  - <span class="kw">with</span> reverse=<span class="num">1</span>, output shape will be (<span class="num">50</span>,<span class="num">4</span>).


Defined in src/operator/tensor/matrix_op.cc:L174</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#reshape_like" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="reshape_like(po:org.apache.mxnet.javaapi.reshape_likeParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="reshape_like(reshape_likeParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">reshape_like</span><span class="params">(<span name="po">po: <a href="reshape_likeParam.html" class="extype" name="org.apache.mxnet.javaapi.reshape_likeParam">reshape_likeParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@reshape_like(po:org.apache.mxnet.javaapi.reshape_likeParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Reshape some or all dimensions of `lhs` to have the same shape as some or all dimensions of `rhs`.

Returns a **view** of the `lhs` array <span class="kw">with</span> a <span class="kw">new</span> shape without altering any data.

Example::

  x = [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>, <span class="num">5</span>, <span class="num">6</span>]
  y = `[ [<span class="num">0</span>, -<span class="num">4</span>], [<span class="num">3</span>, <span class="num">2</span>], [<span class="num">2</span>, <span class="num">2</span>] ]
  reshape_like(x, y) = `[ [<span class="num">1</span>, <span class="num">2</span>], [<span class="num">3</span>, <span class="num">4</span>], [<span class="num">5</span>, <span class="num">6</span>] ]

More precise control over how dimensions are inherited is achieved by specifying \
slices over the `lhs` and `rhs` array dimensions. Only the sliced `lhs` dimensions \
are reshaped to the `rhs` sliced dimensions, <span class="kw">with</span> the non-sliced `lhs` dimensions staying the same.

  Examples::

  - lhs shape = (<span class="num">30</span>,<span class="num">7</span>), rhs shape = (<span class="num">15</span>,<span class="num">2</span>,<span class="num">4</span>), lhs_begin=<span class="num">0</span>, lhs_end=<span class="num">1</span>, rhs_begin=<span class="num">0</span>, rhs_end=<span class="num">2</span>, output shape = (<span class="num">15</span>,<span class="num">2</span>,<span class="num">7</span>)
  - lhs shape = (<span class="num">3</span>, <span class="num">5</span>), rhs shape = (<span class="num">1</span>,<span class="num">15</span>,<span class="num">4</span>), lhs_begin=<span class="num">0</span>, lhs_end=<span class="num">2</span>, rhs_begin=<span class="num">1</span>, rhs_end=<span class="num">2</span>, output shape = (<span class="num">15</span>)

Negative indices are supported, and `<span class="std">None</span>` can be used <span class="kw">for</span> either `lhs_end` or `rhs_end` to indicate the end of the range.

  Example::

  - lhs shape = (<span class="num">30</span>, <span class="num">12</span>), rhs shape = (<span class="num">4</span>, <span class="num">2</span>, <span class="num">2</span>, <span class="num">3</span>), lhs_begin=-<span class="num">1</span>, lhs_end=<span class="std">None</span>, rhs_begin=<span class="num">1</span>, rhs_end=<span class="std">None</span>, output shape = (<span class="num">30</span>, <span class="num">2</span>, <span class="num">2</span>, <span class="num">3</span>)



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L511</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#reverse" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="reverse(data:org.apache.mxnet.javaapi.NDArray,axis:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="reverse(NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">reverse</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="axis">axis: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@reverse(data:org.apache.mxnet.javaapi.NDArray,axis:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Reverses the order of elements along given axis <span class="kw">while</span> preserving array shape.
Note: reverse and flip are equivalent. We use reverse in the following examples.
Examples::
  x = `[ [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>],
       [ <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>,  <span class="num">9.</span>] ]
  reverse(x, axis=<span class="num">0</span>) = `[ [ <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>,  <span class="num">9.</span>],
                        [ <span class="num">0.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>] ]
  reverse(x, axis=<span class="num">1</span>) = `[ [ <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">0.</span>],
                        [ <span class="num">9.</span>,  <span class="num">8.</span>,  <span class="num">7.</span>,  <span class="num">6.</span>,  <span class="num">5.</span>] ]


Defined in src/operator/tensor/matrix_op.cc:L831</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data array</p></dd><dt class="param">axis</dt><dd class="cmt"><p>The axis which to reverse elements.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#rint" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="rint(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="rint(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">rint</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@rint(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise rounded value to the nearest integer of the input.

.. note::
   - For input ``n.<span class="num">5</span>`` ``rint`` returns ``n`` <span class="kw">while</span> ``round`` returns ``n+<span class="num">1</span>``.
   - For input ``-n.<span class="num">5</span>`` both ``rint`` and ``round`` returns ``-n-<span class="num">1</span>``.

Example::

   rint([-<span class="num">1.5</span>, <span class="num">1.5</span>, -<span class="num">1.9</span>, <span class="num">1.9</span>, <span class="num">2.1</span>]) = [-<span class="num">2.</span>,  <span class="num">1.</span>, -<span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>]

The storage <span class="kw">type</span> of ``rint`` output depends upon the input storage <span class="kw">type</span>:

   - rint(default) = default
   - rint(row_sparse) = row_sparse
   - rint(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L798</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#rmsprop_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="rmsprop_update(po:org.apache.mxnet.javaapi.rmsprop_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="rmsprop_update(rmsprop_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">rmsprop_update</span><span class="params">(<span name="po">po: <a href="rmsprop_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.rmsprop_updateParam">rmsprop_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@rmsprop_update(po:org.apache.mxnet.javaapi.rmsprop_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> `RMSProp` optimizer.

`RMSprop` is a variant of stochastic gradient descent where the gradients are
divided by a cache which grows <span class="kw">with</span> the sum of squares of recent gradients?

`RMSProp` is similar to `AdaGrad`, a popular variant of `SGD` which adaptively
tunes the learning rate of each parameter. `AdaGrad` lowers the learning rate <span class="kw">for</span>
each parameter monotonically over the course of training.
While <span class="kw">this</span> is analytically motivated <span class="kw">for</span> convex optimizations, it may not be ideal
<span class="kw">for</span> non-convex problems. `RMSProp` deals <span class="kw">with</span> <span class="kw">this</span> heuristically by allowing the
learning rates to rebound as the denominator decays over time.

Define the Root Mean Square (RMS) error criterion of the gradient as
:math:`RMS[g]_t = \sqrt{E[g^<span class="num">2</span>]_t + \epsilon}`, where :math:`g` represents
gradient and :math:`E[g^<span class="num">2</span>]_t` is the decaying average over past squared gradient.

The :math:`E[g^<span class="num">2</span>]_t` is given by:

.. math::
  E[g^<span class="num">2</span>]_t = \gamma * E[g^<span class="num">2</span>]_{t-<span class="num">1</span>} + (<span class="num">1</span>-\gamma) * g_t^<span class="num">2</span>

The update step is

.. math::
  \theta_{t+<span class="num">1</span>} = \theta_t - \frac{\eta}{RMS[g]_t} g_t

The RMSProp code follows the version in
http:<span class="cmt">//www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf</span>
Tieleman &amp; Hinton, <span class="num">2012.</span>

Hinton suggests the momentum term :math:`\gamma` to be <span class="num">0.9</span> and the learning rate
:math:`\eta` to be <span class="num">0.001</span>.



Defined in src/operator/optimizer_op.cc:L796</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#rmspropalex_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="rmspropalex_update(po:org.apache.mxnet.javaapi.rmspropalex_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="rmspropalex_update(rmspropalex_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">rmspropalex_update</span><span class="params">(<span name="po">po: <a href="rmspropalex_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.rmspropalex_updateParam">rmspropalex_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@rmspropalex_update(po:org.apache.mxnet.javaapi.rmspropalex_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> RMSPropAlex optimizer.

`RMSPropAlex` is non-centered version of `RMSProp`.

Define :math:`E[g^<span class="num">2</span>]_t` is the decaying average over past squared gradient and
:math:`E[g]_t` is the decaying average over past gradient.

.. math::
  E[g^<span class="num">2</span>]_t = \gamma_1 * E[g^<span class="num">2</span>]_{t-<span class="num">1</span>} + (<span class="num">1</span> - \gamma_1) * g_t^<span class="num">2</span>\\
  E[g]_t = \gamma_1 * E[g]_{t-<span class="num">1</span>} + (<span class="num">1</span> - \gamma_1) * g_t\\
  \Delta_t = \gamma_2 * \Delta_{t-<span class="num">1</span>} - \frac{\eta}{\sqrt{E[g^<span class="num">2</span>]_t - E[g]_t^<span class="num">2</span> + \epsilon}} g_t\\

The update step is

.. math::
  \theta_{t+<span class="num">1</span>} = \theta_t + \Delta_t

The RMSPropAlex code follows the version in
http:<span class="cmt">//arxiv.org/pdf/1308.0850v5.pdf Eq(38) - Eq(45) by Alex Graves, 2013.</span>

Graves suggests the momentum term :math:`\gamma_1` to be <span class="num">0.95</span>, :math:`\gamma_2`
to be <span class="num">0.9</span> and the learning rate :math:`\eta` to be <span class="num">0.0001</span>.


Defined in src/operator/optimizer_op.cc:L835</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#round" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="round(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="round(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">round</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@round(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise rounded value to the nearest integer of the input.

Example::

   round([-<span class="num">1.5</span>, <span class="num">1.5</span>, -<span class="num">1.9</span>, <span class="num">1.9</span>, <span class="num">2.1</span>]) = [-<span class="num">2.</span>,  <span class="num">2.</span>, -<span class="num">2.</span>,  <span class="num">2.</span>,  <span class="num">2.</span>]

The storage <span class="kw">type</span> of ``round`` output depends upon the input storage <span class="kw">type</span>:

  - round(default) = default
  - round(row_sparse) = row_sparse
  - round(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L777</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#rsqrt" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="rsqrt(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="rsqrt(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">rsqrt</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@rsqrt(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise inverse square-root value of the input.

.. math::
   rsqrt(x) = <span class="num">1</span>/\sqrt{x}

Example::

   rsqrt([<span class="num">4</span>,<span class="num">9</span>,<span class="num">16</span>]) = [<span class="num">0.5</span>, <span class="num">0.33333334</span>, <span class="num">0.25</span>]

The storage <span class="kw">type</span> of ``rsqrt`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_pow.cc:L221</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sample_exponential" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sample_exponential(po:org.apache.mxnet.javaapi.sample_exponentialParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sample_exponential(sample_exponentialParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sample_exponential</span><span class="params">(<span name="po">po: <a href="sample_exponentialParam.html" class="extype" name="org.apache.mxnet.javaapi.sample_exponentialParam">sample_exponentialParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sample_exponential(po:org.apache.mxnet.javaapi.sample_exponentialParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Concurrent sampling from multiple
exponential distributions <span class="kw">with</span> parameters lambda (rate).

The parameters of the distributions are provided as an input array.
Let *[s]* be the shape of the input array, *n* be the dimension of *[s]*, *[t]*
be the shape specified as the parameter of the operator, and *m* be the dimension
of *[t]*. Then the output will be a *(n+m)*-dimensional array <span class="kw">with</span> shape *[s]x[t]*.

For any valid *n*-dimensional index *i* <span class="kw">with</span> respect to the input array, *output[i]*
will be an *m*-dimensional array that holds randomly drawn samples from the distribution
which is parameterized by the input value at index *i*. If the shape parameter of the
operator is not set, then one sample will be drawn per distribution and the output array
has the same shape as the input array.

Examples::

   lam = [ <span class="num">1.0</span>, <span class="num">8.5</span> ]

   <span class="cmt">// Draw a single sample for each distribution</span>
   sample_exponential(lam) = [ <span class="num">0.51837951</span>,  <span class="num">0.09994757</span>]

   <span class="cmt">// Draw a vector containing two samples for each distribution</span>
   sample_exponential(lam, shape=(<span class="num">2</span>)) = `[ [ <span class="num">0.51837951</span>,  <span class="num">0.19866663</span>],
                                         [ <span class="num">0.09994757</span>,  <span class="num">0.50447971</span>] ]


Defined in src/operator/random/multisample_op.cc:L283</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sample_gamma" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sample_gamma(po:org.apache.mxnet.javaapi.sample_gammaParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sample_gamma(sample_gammaParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sample_gamma</span><span class="params">(<span name="po">po: <a href="sample_gammaParam.html" class="extype" name="org.apache.mxnet.javaapi.sample_gammaParam">sample_gammaParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sample_gamma(po:org.apache.mxnet.javaapi.sample_gammaParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Concurrent sampling from multiple
gamma distributions <span class="kw">with</span> parameters *alpha* (shape) and *beta* (scale).

The parameters of the distributions are provided as input arrays.
Let *[s]* be the shape of the input arrays, *n* be the dimension of *[s]*, *[t]*
be the shape specified as the parameter of the operator, and *m* be the dimension
of *[t]*. Then the output will be a *(n+m)*-dimensional array <span class="kw">with</span> shape *[s]x[t]*.

For any valid *n*-dimensional index *i* <span class="kw">with</span> respect to the input arrays, *output[i]*
will be an *m*-dimensional array that holds randomly drawn samples from the distribution
which is parameterized by the input values at index *i*. If the shape parameter of the
operator is not set, then one sample will be drawn per distribution and the output array
has the same shape as the input arrays.

Examples::

   alpha = [ <span class="num">0.0</span>, <span class="num">2.5</span> ]
   beta = [ <span class="num">1.0</span>, <span class="num">0.7</span> ]

   <span class="cmt">// Draw a single sample for each distribution</span>
   sample_gamma(alpha, beta) = [ <span class="num">0.</span>        ,  <span class="num">2.25797319</span>]

   <span class="cmt">// Draw a vector containing two samples for each distribution</span>
   sample_gamma(alpha, beta, shape=(<span class="num">2</span>)) = `[ [ <span class="num">0.</span>        ,  <span class="num">0.</span>        ],
                                           [ <span class="num">2.25797319</span>,  <span class="num">1.70734084</span>] ]


Defined in src/operator/random/multisample_op.cc:L281</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sample_generalized_negative_binomial" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sample_generalized_negative_binomial(po:org.apache.mxnet.javaapi.sample_generalized_negative_binomialParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sample_generalized_negative_binomial(sample_generalized_negative_binomialParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sample_generalized_negative_binomial</span><span class="params">(<span name="po">po: <a href="sample_generalized_negative_binomialParam.html" class="extype" name="org.apache.mxnet.javaapi.sample_generalized_negative_binomialParam">sample_generalized_negative_binomialParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sample_generalized_negative_binomial(po:org.apache.mxnet.javaapi.sample_generalized_negative_binomialParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Concurrent sampling from multiple
generalized negative binomial distributions <span class="kw">with</span> parameters *mu* (mean) and *alpha* (dispersion).

The parameters of the distributions are provided as input arrays.
Let *[s]* be the shape of the input arrays, *n* be the dimension of *[s]*, *[t]*
be the shape specified as the parameter of the operator, and *m* be the dimension
of *[t]*. Then the output will be a *(n+m)*-dimensional array <span class="kw">with</span> shape *[s]x[t]*.

For any valid *n*-dimensional index *i* <span class="kw">with</span> respect to the input arrays, *output[i]*
will be an *m*-dimensional array that holds randomly drawn samples from the distribution
which is parameterized by the input values at index *i*. If the shape parameter of the
operator is not set, then one sample will be drawn per distribution and the output array
has the same shape as the input arrays.

Samples will always be returned as a floating point data <span class="kw">type</span>.

Examples::

   mu = [ <span class="num">2.0</span>, <span class="num">2.5</span> ]
   alpha = [ <span class="num">1.0</span>, <span class="num">0.1</span> ]

   <span class="cmt">// Draw a single sample for each distribution</span>
   sample_generalized_negative_binomial(mu, alpha) = [ <span class="num">0.</span>,  <span class="num">3.</span>]

   <span class="cmt">// Draw a vector containing two samples for each distribution</span>
   sample_generalized_negative_binomial(mu, alpha, shape=(<span class="num">2</span>)) = `[ [ <span class="num">0.</span>,  <span class="num">3.</span>],
                                                                 [ <span class="num">3.</span>,  <span class="num">1.</span>] ]


Defined in src/operator/random/multisample_op.cc:L292</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sample_multinomial" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sample_multinomial(po:org.apache.mxnet.javaapi.sample_multinomialParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sample_multinomial(sample_multinomialParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sample_multinomial</span><span class="params">(<span name="po">po: <a href="sample_multinomialParam.html" class="extype" name="org.apache.mxnet.javaapi.sample_multinomialParam">sample_multinomialParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sample_multinomial(po:org.apache.mxnet.javaapi.sample_multinomialParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Concurrent sampling from multiple multinomial distributions.

*data* is an *n* dimensional array whose last dimension has length *k*, where
*k* is the number of possible outcomes of each multinomial distribution. This
operator will draw *shape* samples from each distribution. If shape is empty
one sample will be drawn from each distribution.

If *get_prob* is <span class="kw">true</span>, a second array containing log likelihood of the drawn
samples will also be returned. This is usually used <span class="kw">for</span> reinforcement learning
where you can provide reward as head gradient <span class="kw">for</span> <span class="kw">this</span> array to estimate
gradient.

Note that the input distribution must be normalized, i.e. *data* must sum to
<span class="num">1</span> along its last axis.

Examples::

   probs = `[ [<span class="num">0</span>, <span class="num">0.1</span>, <span class="num">0.2</span>, <span class="num">0.3</span>, <span class="num">0.4</span>], [<span class="num">0.4</span>, <span class="num">0.3</span>, <span class="num">0.2</span>, <span class="num">0.1</span>, <span class="num">0</span>] ]

   <span class="cmt">// Draw a single sample for each distribution</span>
   sample_multinomial(probs) = [<span class="num">3</span>, <span class="num">0</span>]

   <span class="cmt">// Draw a vector containing two samples for each distribution</span>
   sample_multinomial(probs, shape=(<span class="num">2</span>)) = `[ [<span class="num">4</span>, <span class="num">2</span>],
                                           [<span class="num">0</span>, <span class="num">0</span>] ]

   <span class="cmt">// requests log likelihood</span>
   sample_multinomial(probs, get_prob=True) = [<span class="num">2</span>, <span class="num">1</span>], [<span class="num">0.2</span>, <span class="num">0.3</span>]</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sample_negative_binomial" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sample_negative_binomial(po:org.apache.mxnet.javaapi.sample_negative_binomialParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sample_negative_binomial(sample_negative_binomialParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sample_negative_binomial</span><span class="params">(<span name="po">po: <a href="sample_negative_binomialParam.html" class="extype" name="org.apache.mxnet.javaapi.sample_negative_binomialParam">sample_negative_binomialParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sample_negative_binomial(po:org.apache.mxnet.javaapi.sample_negative_binomialParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Concurrent sampling from multiple
negative binomial distributions <span class="kw">with</span> parameters *k* (failure limit) and *p* (failure probability).

The parameters of the distributions are provided as input arrays.
Let *[s]* be the shape of the input arrays, *n* be the dimension of *[s]*, *[t]*
be the shape specified as the parameter of the operator, and *m* be the dimension
of *[t]*. Then the output will be a *(n+m)*-dimensional array <span class="kw">with</span> shape *[s]x[t]*.

For any valid *n*-dimensional index *i* <span class="kw">with</span> respect to the input arrays, *output[i]*
will be an *m*-dimensional array that holds randomly drawn samples from the distribution
which is parameterized by the input values at index *i*. If the shape parameter of the
operator is not set, then one sample will be drawn per distribution and the output array
has the same shape as the input arrays.

Samples will always be returned as a floating point data <span class="kw">type</span>.

Examples::

   k = [ <span class="num">20</span>, <span class="num">49</span> ]
   p = [ <span class="num">0.4</span> , <span class="num">0.77</span> ]

   <span class="cmt">// Draw a single sample for each distribution</span>
   sample_negative_binomial(k, p) = [ <span class="num">15.</span>,  <span class="num">16.</span>]

   <span class="cmt">// Draw a vector containing two samples for each distribution</span>
   sample_negative_binomial(k, p, shape=(<span class="num">2</span>)) = `[ [ <span class="num">15.</span>,  <span class="num">50.</span>],
                                                [ <span class="num">16.</span>,  <span class="num">12.</span>] ]


Defined in src/operator/random/multisample_op.cc:L288</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sample_normal" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sample_normal(po:org.apache.mxnet.javaapi.sample_normalParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sample_normal(sample_normalParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sample_normal</span><span class="params">(<span name="po">po: <a href="sample_normalParam.html" class="extype" name="org.apache.mxnet.javaapi.sample_normalParam">sample_normalParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sample_normal(po:org.apache.mxnet.javaapi.sample_normalParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Concurrent sampling from multiple
normal distributions <span class="kw">with</span> parameters *mu* (mean) and *sigma* (standard deviation).

The parameters of the distributions are provided as input arrays.
Let *[s]* be the shape of the input arrays, *n* be the dimension of *[s]*, *[t]*
be the shape specified as the parameter of the operator, and *m* be the dimension
of *[t]*. Then the output will be a *(n+m)*-dimensional array <span class="kw">with</span> shape *[s]x[t]*.

For any valid *n*-dimensional index *i* <span class="kw">with</span> respect to the input arrays, *output[i]*
will be an *m*-dimensional array that holds randomly drawn samples from the distribution
which is parameterized by the input values at index *i*. If the shape parameter of the
operator is not set, then one sample will be drawn per distribution and the output array
has the same shape as the input arrays.

Examples::

   mu = [ <span class="num">0.0</span>, <span class="num">2.5</span> ]
   sigma = [ <span class="num">1.0</span>, <span class="num">3.7</span> ]

   <span class="cmt">// Draw a single sample for each distribution</span>
   sample_normal(mu, sigma) = [-<span class="num">0.56410581</span>,  <span class="num">0.95934606</span>]

   <span class="cmt">// Draw a vector containing two samples for each distribution</span>
   sample_normal(mu, sigma, shape=(<span class="num">2</span>)) = `[ [-<span class="num">0.56410581</span>,  <span class="num">0.2928229</span> ],
                                          [ <span class="num">0.95934606</span>,  <span class="num">4.48287058</span>] ]


Defined in src/operator/random/multisample_op.cc:L278</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sample_poisson" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sample_poisson(po:org.apache.mxnet.javaapi.sample_poissonParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sample_poisson(sample_poissonParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sample_poisson</span><span class="params">(<span name="po">po: <a href="sample_poissonParam.html" class="extype" name="org.apache.mxnet.javaapi.sample_poissonParam">sample_poissonParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sample_poisson(po:org.apache.mxnet.javaapi.sample_poissonParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Concurrent sampling from multiple
Poisson distributions <span class="kw">with</span> parameters lambda (rate).

The parameters of the distributions are provided as an input array.
Let *[s]* be the shape of the input array, *n* be the dimension of *[s]*, *[t]*
be the shape specified as the parameter of the operator, and *m* be the dimension
of *[t]*. Then the output will be a *(n+m)*-dimensional array <span class="kw">with</span> shape *[s]x[t]*.

For any valid *n*-dimensional index *i* <span class="kw">with</span> respect to the input array, *output[i]*
will be an *m*-dimensional array that holds randomly drawn samples from the distribution
which is parameterized by the input value at index *i*. If the shape parameter of the
operator is not set, then one sample will be drawn per distribution and the output array
has the same shape as the input array.

Samples will always be returned as a floating point data <span class="kw">type</span>.

Examples::

   lam = [ <span class="num">1.0</span>, <span class="num">8.5</span> ]

   <span class="cmt">// Draw a single sample for each distribution</span>
   sample_poisson(lam) = [  <span class="num">0.</span>,  <span class="num">13.</span>]

   <span class="cmt">// Draw a vector containing two samples for each distribution</span>
   sample_poisson(lam, shape=(<span class="num">2</span>)) = `[ [  <span class="num">0.</span>,   <span class="num">4.</span>],
                                     [ <span class="num">13.</span>,   <span class="num">8.</span>] ]


Defined in src/operator/random/multisample_op.cc:L285</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sample_uniform" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sample_uniform(po:org.apache.mxnet.javaapi.sample_uniformParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sample_uniform(sample_uniformParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sample_uniform</span><span class="params">(<span name="po">po: <a href="sample_uniformParam.html" class="extype" name="org.apache.mxnet.javaapi.sample_uniformParam">sample_uniformParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sample_uniform(po:org.apache.mxnet.javaapi.sample_uniformParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Concurrent sampling from multiple
uniform distributions on the intervals given by *[low,high)*.

The parameters of the distributions are provided as input arrays.
Let *[s]* be the shape of the input arrays, *n* be the dimension of *[s]*, *[t]*
be the shape specified as the parameter of the operator, and *m* be the dimension
of *[t]*. Then the output will be a *(n+m)*-dimensional array <span class="kw">with</span> shape *[s]x[t]*.

For any valid *n*-dimensional index *i* <span class="kw">with</span> respect to the input arrays, *output[i]*
will be an *m*-dimensional array that holds randomly drawn samples from the distribution
which is parameterized by the input values at index *i*. If the shape parameter of the
operator is not set, then one sample will be drawn per distribution and the output array
has the same shape as the input arrays.

Examples::

   low = [ <span class="num">0.0</span>, <span class="num">2.5</span> ]
   high = [ <span class="num">1.0</span>, <span class="num">3.7</span> ]

   <span class="cmt">// Draw a single sample for each distribution</span>
   sample_uniform(low, high) = [ <span class="num">0.40451524</span>,  <span class="num">3.18687344</span>]

   <span class="cmt">// Draw a vector containing two samples for each distribution</span>
   sample_uniform(low, high, shape=(<span class="num">2</span>)) = `[ [ <span class="num">0.40451524</span>,  <span class="num">0.18017688</span>],
                                           [ <span class="num">3.18687344</span>,  <span class="num">3.68352246</span>] ]


Defined in src/operator/random/multisample_op.cc:L276</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#scatter_nd" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="scatter_nd(data:org.apache.mxnet.javaapi.NDArray,indices:org.apache.mxnet.javaapi.NDArray,shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="scatter_nd(NDArray,NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">scatter_nd</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="indices">indices: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="shape">shape: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@scatter_nd(data:org.apache.mxnet.javaapi.NDArray,indices:org.apache.mxnet.javaapi.NDArray,shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Scatters data into a <span class="kw">new</span> tensor according to indices.

Given `data` <span class="kw">with</span> shape `(Y_0, ..., Y_{K-<span class="num">1</span>}, X_M, ..., X_{N-<span class="num">1</span>})` and indices <span class="kw">with</span> shape
`(M, Y_0, ..., Y_{K-<span class="num">1</span>})`, the output will have shape `(X_0, X_1, ..., X_{N-<span class="num">1</span>})`,
where `M &lt;= N`. If `M == N`, data shape should simply be `(Y_0, ..., Y_{K-<span class="num">1</span>})`.

The elements in output is defined as follows::

  output[indices[<span class="num">0</span>, y_0, ..., y_{K-<span class="num">1</span>}],
         ...,
         indices[M-<span class="num">1</span>, y_0, ..., y_{K-<span class="num">1</span>}],
         x_M, ..., x_{N-<span class="num">1</span>}] = data[y_0, ..., y_{K-<span class="num">1</span>}, x_M, ..., x_{N-<span class="num">1</span>}]

all other entries in output are <span class="num">0.</span>

.. warning::

    If the indices have duplicates, the result will be non-deterministic and
    the gradient of `scatter_nd` will not be correct!!


Examples::

  data = [<span class="num">2</span>, <span class="num">3</span>, <span class="num">0</span>]
  indices = `[ [<span class="num">1</span>, <span class="num">1</span>, <span class="num">0</span>], [<span class="num">0</span>, <span class="num">1</span>, <span class="num">0</span>] ]
  shape = (<span class="num">2</span>, <span class="num">2</span>)
  scatter_nd(data, indices, shape) = `[ [<span class="num">0</span>, <span class="num">0</span>], [<span class="num">2</span>, <span class="num">3</span>] ]

  data = `[ `[ [<span class="num">1</span>, <span class="num">2</span>], [<span class="num">3</span>, <span class="num">4</span>] ], `[ [<span class="num">5</span>, <span class="num">6</span>], [<span class="num">7</span>, <span class="num">8</span>] ] ]
  indices = `[ [<span class="num">0</span>, <span class="num">1</span>], [<span class="num">1</span>, <span class="num">1</span>] ]
  shape = (<span class="num">2</span>, <span class="num">2</span>, <span class="num">2</span>, <span class="num">2</span>)
  scatter_nd(data, indices, shape) = `[ [`[ [<span class="num">0</span>, <span class="num">0</span>],
                                        [<span class="num">0</span>, <span class="num">0</span>] ],

                                       `[ [<span class="num">1</span>, <span class="num">2</span>],
                                        [<span class="num">3</span>, <span class="num">4</span>] ] ],

                                      `[ `[ [<span class="num">0</span>, <span class="num">0</span>],
                                        [<span class="num">0</span>, <span class="num">0</span>] ],

                                       `[ [<span class="num">5</span>, <span class="num">6</span>],
                                        [<span class="num">7</span>, <span class="num">8</span>] ] ] ]</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>data</p></dd><dt class="param">indices</dt><dd class="cmt"><p>indices</p></dd><dt class="param">shape</dt><dd class="cmt"><p>Shape of output.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sgd_mom_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sgd_mom_update(po:org.apache.mxnet.javaapi.sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sgd_mom_update(sgd_mom_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sgd_mom_update</span><span class="params">(<span name="po">po: <a href="sgd_mom_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.sgd_mom_updateParam">sgd_mom_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sgd_mom_update(po:org.apache.mxnet.javaapi.sgd_mom_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Momentum update function <span class="kw">for</span> Stochastic Gradient Descent (SGD) optimizer.

Momentum update has better convergence rates on neural networks. Mathematically it looks
like below:

.. math::

  v_1 = \alpha * \nabla J(W_0)\\
  v_t = \gamma v_{t-<span class="num">1</span>} - \alpha * \nabla J(W_{t-<span class="num">1</span>})\\
  W_t = W_{t-<span class="num">1</span>} + v_t

It updates the weights using::

  v = momentum * v - learning_rate * gradient
  weight += v

Where the parameter ``momentum`` is the decay rate of momentum estimates at each epoch.

However, <span class="kw">if</span> grad's storage <span class="kw">type</span> is ``row_sparse``, ``lazy_update`` is True and weight's storage
<span class="kw">type</span> is the same as momentum's storage <span class="kw">type</span>,
only the row slices whose indices appear in grad.indices are updated (<span class="kw">for</span> both weight and momentum)::

  <span class="kw">for</span> row in gradient.indices:
      v[row] = momentum[row] * v[row] - learning_rate * gradient[row]
      weight[row] += v[row]



Defined in src/operator/optimizer_op.cc:L564</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sgd_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sgd_update(po:org.apache.mxnet.javaapi.sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sgd_update(sgd_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sgd_update</span><span class="params">(<span name="po">po: <a href="sgd_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.sgd_updateParam">sgd_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sgd_update(po:org.apache.mxnet.javaapi.sgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> Stochastic Gradient Descent (SGD) optimizer.

It updates the weights using::

 weight = weight - learning_rate * (gradient + wd * weight)

However, <span class="kw">if</span> gradient is of ``row_sparse`` storage <span class="kw">type</span> and ``lazy_update`` is True,
only the row slices whose indices appear in grad.indices are updated::

 <span class="kw">for</span> row in gradient.indices:
     weight[row] = weight[row] - learning_rate * (gradient[row] + wd * weight[row])



Defined in src/operator/optimizer_op.cc:L523</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#shape_array" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="shape_array(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="shape_array(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">shape_array</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@shape_array(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns a <span class="num">1</span>D int64 array containing the shape of data.

Example::

  shape_array(`[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>], [<span class="num">5</span>,<span class="num">6</span>,<span class="num">7</span>,<span class="num">8</span>] ]) = [<span class="num">2</span>,<span class="num">4</span>]



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L573</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input Array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#shuffle" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="shuffle(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="shuffle(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">shuffle</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@shuffle(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Randomly shuffle the elements.

This shuffles the array along the first axis.
The order of the elements in each subarray does not change.
For example, <span class="kw">if</span> a <span class="num">2</span>D array is given, the order of the rows randomly changes,
but the order of the elements in each row does not change.</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Data to be shuffled.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sigmoid" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sigmoid(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sigmoid(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sigmoid</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sigmoid(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes sigmoid of x element-wise.

.. math::
   y = <span class="num">1</span> / (<span class="num">1</span> + exp(-x))

The storage <span class="kw">type</span> of ``sigmoid`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L119</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sign" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sign(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sign(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sign</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sign(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise sign of the input.

Example::

   sign([-<span class="num">2</span>, <span class="num">0</span>, <span class="num">3</span>]) = [-<span class="num">1</span>, <span class="num">0</span>, <span class="num">1</span>]

The storage <span class="kw">type</span> of ``sign`` output depends upon the input storage <span class="kw">type</span>:

   - sign(default) = default
   - sign(row_sparse) = row_sparse
   - sign(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L758</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#signsgd_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="signsgd_update(po:org.apache.mxnet.javaapi.signsgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="signsgd_update(signsgd_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">signsgd_update</span><span class="params">(<span name="po">po: <a href="signsgd_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.signsgd_updateParam">signsgd_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@signsgd_update(po:org.apache.mxnet.javaapi.signsgd_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Update function <span class="kw">for</span> SignSGD optimizer.

.. math::

 g_t = \nabla J(W_{t-<span class="num">1</span>})\\
 W_t = W_{t-<span class="num">1</span>} - \eta_t \text{sign}(g_t)

It updates the weights using::

 weight = weight - learning_rate * sign(gradient)

.. note::
   - sparse ndarray not supported <span class="kw">for</span> <span class="kw">this</span> optimizer yet.


Defined in src/operator/optimizer_op.cc:L62</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#signum_update" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="signum_update(po:org.apache.mxnet.javaapi.signum_updateParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="signum_update(signum_updateParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">signum_update</span><span class="params">(<span name="po">po: <a href="signum_updateParam.html" class="extype" name="org.apache.mxnet.javaapi.signum_updateParam">signum_updateParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@signum_update(po:org.apache.mxnet.javaapi.signum_updateParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>SIGN momentUM (Signum) optimizer.

.. math::

 g_t = \nabla J(W_{t-<span class="num">1</span>})\\
 m_t = \beta m_{t-<span class="num">1</span>} + (<span class="num">1</span> - \beta) g_t\\
 W_t = W_{t-<span class="num">1</span>} - \eta_t \text{sign}(m_t)

It updates the weights using::
 state = momentum * state + (<span class="num">1</span>-momentum) * gradient
 weight = weight - learning_rate * sign(state)

Where the parameter ``momentum`` is the decay rate of momentum estimates at each epoch.

.. note::
   - sparse ndarray not supported <span class="kw">for</span> <span class="kw">this</span> optimizer yet.


Defined in src/operator/optimizer_op.cc:L91</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sin" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sin(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sin(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sin</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sin(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the element-wise sine of the input array.

The input should be in radians (:math:`<span class="num">2</span>\pi` rad equals <span class="num">360</span> degrees).

.. math::
   sin([<span class="num">0</span>, \pi/<span class="num">4</span>, \pi/<span class="num">2</span>]) = [<span class="num">0</span>, <span class="num">0.707</span>, <span class="num">1</span>]

The storage <span class="kw">type</span> of ``sin`` output depends upon the input storage <span class="kw">type</span>:

   - sin(default) = default
   - sin(row_sparse) = row_sparse
   - sin(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L47</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sinh" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sinh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sinh(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sinh</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sinh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the hyperbolic sine of the input array, computed element-wise.

.. math::
   sinh(x) = <span class="num">0.5</span>\times(exp(x) - exp(-x))

The storage <span class="kw">type</span> of ``sinh`` output depends upon the input storage <span class="kw">type</span>:

   - sinh(default) = default
   - sinh(row_sparse) = row_sparse
   - sinh(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L371</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#size_array" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="size_array(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="size_array(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">size_array</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@size_array(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns a <span class="num">1</span>D int64 array containing the size of data.

Example::

  size_array(`[ [<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>], [<span class="num">5</span>,<span class="num">6</span>,<span class="num">7</span>,<span class="num">8</span>] ]) = [<span class="num">8</span>]



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L624</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input Array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#slice" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="slice(data:org.apache.mxnet.javaapi.NDArray,begin:org.apache.mxnet.javaapi.Shape,end:org.apache.mxnet.javaapi.Shape,step:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="slice(NDArray,Shape,Shape,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">slice</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="begin">begin: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="end">end: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="step">step: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@slice(data:org.apache.mxnet.javaapi.NDArray,begin:org.apache.mxnet.javaapi.Shape,end:org.apache.mxnet.javaapi.Shape,step:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Slices a region of the array.
.. note:: ``crop`` is deprecated. Use ``slice`` instead.
This function returns a sliced array between the indices given
by `begin` and `end` <span class="kw">with</span> the corresponding `step`.
For an input array of ``shape=(d_0, d_1, ..., d_n-<span class="num">1</span>)``,
slice operation <span class="kw">with</span> ``begin=(b_0, b_1...b_m-<span class="num">1</span>)``,
``end=(e_0, e_1, ..., e_m-<span class="num">1</span>)``, and ``step=(s_0, s_1, ..., s_m-<span class="num">1</span>)``,
where m &lt;= n, results in an array <span class="kw">with</span> the shape
``(|e_0-b_0|/|s_0|, ..., |e_m-<span class="num">1</span>-b_m-<span class="num">1</span>|/|s_m-<span class="num">1</span>|, d_m, ..., d_n-<span class="num">1</span>)``.
The resulting array's *k*-th dimension contains elements
from the *k*-th dimension of the input array starting
from index ``b_k`` (inclusive) <span class="kw">with</span> step ``s_k``
until reaching ``e_k`` (exclusive).
If the *k*-th elements are `<span class="std">None</span>` in the sequence of `begin`, `end`,
and `step`, the following rule will be used to set default values.
If `s_k` is `<span class="std">None</span>`, set `s_k=<span class="num">1</span>`. If `s_k &gt; <span class="num">0</span>`, set `b_k=<span class="num">0</span>`, `e_k=d_k`;
<span class="kw">else</span>, set `b_k=d_k-<span class="num">1</span>`, `e_k=-<span class="num">1</span>`.
The storage <span class="kw">type</span> of ``slice`` output depends on storage types of inputs
- slice(csr) = csr
- otherwise, ``slice`` generates output <span class="kw">with</span> default storage
.. note:: When input data storage <span class="kw">type</span> is csr, it only supports
   step=(), or step=(<span class="std">None</span>,), or step=(<span class="num">1</span>,) to generate a csr output.
   For other step parameter values, it falls back to slicing
   a dense tensor.
Example::
  x = `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>,   <span class="num">4.</span>],
       [  <span class="num">5.</span>,   <span class="num">6.</span>,   <span class="num">7.</span>,   <span class="num">8.</span>],
       [  <span class="num">9.</span>,  <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ]
  slice(x, begin=(<span class="num">0</span>,<span class="num">1</span>), end=(<span class="num">2</span>,<span class="num">4</span>)) = `[ [ <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>],
                                     [ <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>] ]
  slice(x, begin=(<span class="std">None</span>, <span class="num">0</span>), end=(<span class="std">None</span>, <span class="num">3</span>), step=(-<span class="num">1</span>, <span class="num">2</span>)) = `[ [<span class="num">9.</span>, <span class="num">11.</span>],
                                                            [<span class="num">5.</span>,  <span class="num">7.</span>],
                                                            [<span class="num">1.</span>,  <span class="num">3.</span>] ]


Defined in src/operator/tensor/matrix_op.cc:L481</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Source input</p></dd><dt class="param">begin</dt><dd class="cmt"><p>starting indices for the slice operation, supports negative indices.</p></dd><dt class="param">end</dt><dd class="cmt"><p>ending indices for the slice operation, supports negative indices.</p></dd><dt class="param">step</dt><dd class="cmt"><p>step for the slice operation, supports negative values.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#slice_axis" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="slice_axis(data:org.apache.mxnet.javaapi.NDArray,axis:Integer,begin:Integer,end:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="slice_axis(NDArray,Integer,Integer,Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">slice_axis</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="axis">axis: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="begin">begin: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="end">end: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@slice_axis(data:org.apache.mxnet.javaapi.NDArray,axis:Integer,begin:Integer,end:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Slices along a given axis.
Returns an array slice along a given `axis` starting from the `begin` index
to the `end` index.
Examples::
  x = `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>,   <span class="num">4.</span>],
       [  <span class="num">5.</span>,   <span class="num">6.</span>,   <span class="num">7.</span>,   <span class="num">8.</span>],
       [  <span class="num">9.</span>,  <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ]
  slice_axis(x, axis=<span class="num">0</span>, begin=<span class="num">1</span>, end=<span class="num">3</span>) = `[ [  <span class="num">5.</span>,   <span class="num">6.</span>,   <span class="num">7.</span>,   <span class="num">8.</span>],
                                           [  <span class="num">9.</span>,  <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ]
  slice_axis(x, axis=<span class="num">1</span>, begin=<span class="num">0</span>, end=<span class="num">2</span>) = `[ [  <span class="num">1.</span>,   <span class="num">2.</span>],
                                           [  <span class="num">5.</span>,   <span class="num">6.</span>],
                                           [  <span class="num">9.</span>,  <span class="num">10.</span>] ]
  slice_axis(x, axis=<span class="num">1</span>, begin=-<span class="num">3</span>, end=-<span class="num">1</span>) = `[ [  <span class="num">2.</span>,   <span class="num">3.</span>],
                                             [  <span class="num">6.</span>,   <span class="num">7.</span>],
                                             [ <span class="num">10.</span>,  <span class="num">11.</span>] ]


Defined in src/operator/tensor/matrix_op.cc:L570</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Source input</p></dd><dt class="param">axis</dt><dd class="cmt"><p>Axis along which to be sliced, supports negative indexes.</p></dd><dt class="param">begin</dt><dd class="cmt"><p>The beginning index along the axis to be sliced,  supports negative indexes.</p></dd><dt class="param">end</dt><dd class="cmt"><p>The ending index along the axis to be sliced,  supports negative indexes.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#slice_like" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="slice_like(data:org.apache.mxnet.javaapi.NDArray,shape_like:org.apache.mxnet.javaapi.NDArray,axes:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="slice_like(NDArray,NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">slice_like</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="shape_like">shape_like: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="axes">axes: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@slice_like(data:org.apache.mxnet.javaapi.NDArray,shape_like:org.apache.mxnet.javaapi.NDArray,axes:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Slices a region of the array like the shape of another array.
This function is similar to ``slice``, however, the `begin` are always `<span class="num">0</span>`s
and `end` of specific axes are inferred from the second input `shape_like`.
Given the second `shape_like` input of ``shape=(d_0, d_1, ..., d_n-<span class="num">1</span>)``,
a ``slice_like`` operator <span class="kw">with</span> default empty `axes`, it performs the
following operation:
`` out = slice(input, begin=(<span class="num">0</span>, <span class="num">0</span>, ..., <span class="num">0</span>), end=(d_0, d_1, ..., d_n-<span class="num">1</span>))``.
When `axes` is not empty, it is used to speficy which axes are being sliced.
Given a <span class="num">4</span>-d input data, ``slice_like`` operator <span class="kw">with</span> ``axes=(<span class="num">0</span>, <span class="num">2</span>, -<span class="num">1</span>)``
will perform the following operation:
`` out = slice(input, begin=(<span class="num">0</span>, <span class="num">0</span>, <span class="num">0</span>, <span class="num">0</span>), end=(d_0, <span class="std">None</span>, d_2, d_3))``.
Note that it is allowed to have first and second input <span class="kw">with</span> different dimensions,
however, you have to make sure the `axes` are specified and not exceeding the
dimension limits.
For example, given `input_1` <span class="kw">with</span> ``shape=(<span class="num">2</span>,<span class="num">3</span>,<span class="num">4</span>,<span class="num">5</span>)`` and `input_2` <span class="kw">with</span>
``shape=(<span class="num">1</span>,<span class="num">2</span>,<span class="num">3</span>)``, it is not allowed to use:
`` out = slice_like(a, b)`` because ndim of `input_1` is <span class="num">4</span>, and ndim of `input_2`
is <span class="num">3.</span>
The following is allowed in <span class="kw">this</span> situation:
`` out = slice_like(a, b, axes=(<span class="num">0</span>, <span class="num">2</span>))``
Example::
  x = `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>,   <span class="num">4.</span>],
       [  <span class="num">5.</span>,   <span class="num">6.</span>,   <span class="num">7.</span>,   <span class="num">8.</span>],
       [  <span class="num">9.</span>,  <span class="num">10.</span>,  <span class="num">11.</span>,  <span class="num">12.</span>] ]
  y = `[ [  <span class="num">0.</span>,   <span class="num">0.</span>,   <span class="num">0.</span>],
       [  <span class="num">0.</span>,   <span class="num">0.</span>,   <span class="num">0.</span>] ]
  slice_like(x, y) = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>]
                      [ <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>] ]
  slice_like(x, y, axes=(<span class="num">0</span>, <span class="num">1</span>)) = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>]
                                   [ <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>] ]
  slice_like(x, y, axes=(<span class="num">0</span>)) = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>]
                                [ <span class="num">5.</span>,  <span class="num">6.</span>,  <span class="num">7.</span>,  <span class="num">8.</span>] ]
  slice_like(x, y, axes=(-<span class="num">1</span>)) = `[ [  <span class="num">1.</span>,   <span class="num">2.</span>,   <span class="num">3.</span>]
                                 [  <span class="num">5.</span>,   <span class="num">6.</span>,   <span class="num">7.</span>]
                                 [  <span class="num">9.</span>,  <span class="num">10.</span>,  <span class="num">11.</span>] ]


Defined in src/operator/tensor/matrix_op.cc:L624</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Source input</p></dd><dt class="param">shape_like</dt><dd class="cmt"><p>Shape like input</p></dd><dt class="param">axes</dt><dd class="cmt"><p>List of axes on which input data will be sliced according to the corresponding size of the second input. By default will slice on all axes. Negative axes are supported.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#smooth_l1" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="smooth_l1(data:org.apache.mxnet.javaapi.NDArray,scalar:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="smooth_l1(NDArray,Float,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">smooth_l1</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="scalar">scalar: <span class="extype" name="java.lang.Float">Float</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@smooth_l1(data:org.apache.mxnet.javaapi.NDArray,scalar:Float,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Calculate Smooth L1 Loss(lhs, scalar) by summing

.. math::

    f(x) =
    \begin{cases}
    (\sigma x)^<span class="num">2</span>/<span class="num">2</span>,&amp; \text{<span class="kw">if</span> }x &lt; <span class="num">1</span>/\sigma^<span class="num">2</span>\\
    |x|-<span class="num">0.5</span>/\sigma^<span class="num">2</span>,&amp; \text{otherwise}
    \end{cases}

where :math:`x` is an element of the tensor *lhs* and :math:`\sigma` is the scalar.

Example::

  smooth_l1([<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>]) = [<span class="num">0.5</span>, <span class="num">1.5</span>, <span class="num">2.5</span>, <span class="num">3.5</span>]
  smooth_l1([<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>], scalar=<span class="num">1</span>) = [<span class="num">0.5</span>, <span class="num">1.5</span>, <span class="num">2.5</span>, <span class="num">3.5</span>]



Defined in src/operator/tensor/elemwise_binary_scalar_op_extended.cc:L108</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>source input</p></dd><dt class="param">scalar</dt><dd class="cmt"><p>scalar input</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#softmax" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="softmax(po:org.apache.mxnet.javaapi.softmaxParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="softmax(softmaxParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">softmax</span><span class="params">(<span name="po">po: <a href="softmaxParam.html" class="extype" name="org.apache.mxnet.javaapi.softmaxParam">softmaxParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@softmax(po:org.apache.mxnet.javaapi.softmaxParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies the softmax function.

The resulting array contains elements in the range (<span class="num">0</span>,<span class="num">1</span>) and the elements along the given axis sum up to <span class="num">1.</span>

.. math::
   softmax(\mathbf{z/t})_j = \frac{e^{z_j/t}}{\sum_{k=<span class="num">1</span>}^K e^{z_k/t}}

<span class="kw">for</span> :math:`j = <span class="num">1</span>, ..., K`

t is the temperature parameter in softmax function. By default, t equals <span class="num">1.0</span>

Example::

  x = `[ [ <span class="num">1.</span>  <span class="num">1.</span>  <span class="num">1.</span>]
       [ <span class="num">1.</span>  <span class="num">1.</span>  <span class="num">1.</span>] ]

  softmax(x,axis=<span class="num">0</span>) = `[ [ <span class="num">0.5</span>  <span class="num">0.5</span>  <span class="num">0.5</span>]
                       [ <span class="num">0.5</span>  <span class="num">0.5</span>  <span class="num">0.5</span>] ]

  softmax(x,axis=<span class="num">1</span>) = `[ [ <span class="num">0.33333334</span>,  <span class="num">0.33333334</span>,  <span class="num">0.33333334</span>],
                       [ <span class="num">0.33333334</span>,  <span class="num">0.33333334</span>,  <span class="num">0.33333334</span>] ]



Defined in src/operator/nn/softmax.cc:L135</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#softmax_cross_entropy" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="softmax_cross_entropy(data:org.apache.mxnet.javaapi.NDArray,label:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="softmax_cross_entropy(NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">softmax_cross_entropy</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="label">label: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@softmax_cross_entropy(data:org.apache.mxnet.javaapi.NDArray,label:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Calculate cross entropy of softmax output and one-hot label.

- This operator computes the cross entropy in two steps:
  - Applies softmax function on the input array.
  - Computes and returns the cross entropy loss between the softmax output and the labels.

- The softmax function and cross entropy loss is given by:

  - Softmax <span class="std">Function</span>:

  .. math:: \text{softmax}(x)_i = \frac{exp(x_i)}{\sum_j exp(x_j)}

  - Cross Entropy <span class="std">Function</span>:

  .. math:: \text{CE(label, output)} = - \sum_i \text{label}_i \log(\text{output}_i)

Example::

  x = `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>],
       [<span class="num">11</span>, <span class="num">7</span>, <span class="num">5</span>] ]

  label = [<span class="num">2</span>, <span class="num">0</span>]

  softmax(x) = `[ [<span class="num">0.09003057</span>, <span class="num">0.24472848</span>, <span class="num">0.66524094</span>],
                [<span class="num">0.97962922</span>, <span class="num">0.01794253</span>, <span class="num">0.00242826</span>] ]

  softmax_cross_entropy(data, label) = - log(<span class="num">0.66524084</span>) - log(<span class="num">0.97962922</span>) = <span class="num">0.4281871</span>



Defined in src/operator/loss_binary_op.cc:L58</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data</p></dd><dt class="param">label</dt><dd class="cmt"><p>Input label</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#softmin" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="softmin(po:org.apache.mxnet.javaapi.softminParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="softmin(softminParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">softmin</span><span class="params">(<span name="po">po: <a href="softminParam.html" class="extype" name="org.apache.mxnet.javaapi.softminParam">softminParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@softmin(po:org.apache.mxnet.javaapi.softminParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Applies the softmin function.

The resulting array contains elements in the range (<span class="num">0</span>,<span class="num">1</span>) and the elements along the given axis sum
up to <span class="num">1.</span>

.. math::
   softmin(\mathbf{z/t})_j = \frac{e^{-z_j/t}}{\sum_{k=<span class="num">1</span>}^K e^{-z_k/t}}

<span class="kw">for</span> :math:`j = <span class="num">1</span>, ..., K`

t is the temperature parameter in softmax function. By default, t equals <span class="num">1.0</span>

Example::

  x = `[ [ <span class="num">1.</span>  <span class="num">2.</span>  <span class="num">3.</span>]
       [ <span class="num">3.</span>  <span class="num">2.</span>  <span class="num">1.</span>] ]

  softmin(x,axis=<span class="num">0</span>) = `[ [ <span class="num">0.88079703</span>,  <span class="num">0.5</span>,  <span class="num">0.11920292</span>],
                       [ <span class="num">0.11920292</span>,  <span class="num">0.5</span>,  <span class="num">0.88079703</span>] ]

  softmin(x,axis=<span class="num">1</span>) = `[ [ <span class="num">0.66524094</span>,  <span class="num">0.24472848</span>,  <span class="num">0.09003057</span>],
                       [ <span class="num">0.09003057</span>,  <span class="num">0.24472848</span>,  <span class="num">0.66524094</span>] ]



Defined in src/operator/nn/softmin.cc:L56</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#softsign" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="softsign(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="softsign(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">softsign</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@softsign(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes softsign of x element-wise.

.. math::
   y = x / (<span class="num">1</span> + abs(x))

The storage <span class="kw">type</span> of ``softsign`` output is always dense



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L191</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sort" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sort(po:org.apache.mxnet.javaapi.sortParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sort(sortParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sort</span><span class="params">(<span name="po">po: <a href="sortParam.html" class="extype" name="org.apache.mxnet.javaapi.sortParam">sortParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sort(po:org.apache.mxnet.javaapi.sortParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns a sorted copy of an input array along the given axis.

Examples::

  x = `[ [ <span class="num">1</span>, <span class="num">4</span>],
       [ <span class="num">3</span>, <span class="num">1</span>] ]

  <span class="cmt">// sorts along the last axis</span>
  sort(x) = `[ [ <span class="num">1.</span>,  <span class="num">4.</span>],
             [ <span class="num">1.</span>,  <span class="num">3.</span>] ]

  <span class="cmt">// flattens and then sorts</span>
  sort(x, axis=<span class="std">None</span>) = [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>]

  <span class="cmt">// sorts along the first axis</span>
  sort(x, axis=<span class="num">0</span>) = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>],
                     [ <span class="num">3.</span>,  <span class="num">4.</span>] ]

  <span class="cmt">// in a descend order</span>
  sort(x, is_ascend=<span class="num">0</span>) = `[ [ <span class="num">4.</span>,  <span class="num">1.</span>],
                          [ <span class="num">3.</span>,  <span class="num">1.</span>] ]



Defined in src/operator/tensor/ordering_op.cc:L132</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#space_to_depth" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="space_to_depth(data:org.apache.mxnet.javaapi.NDArray,block_size:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="space_to_depth(NDArray,Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">space_to_depth</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="block_size">block_size: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@space_to_depth(data:org.apache.mxnet.javaapi.NDArray,block_size:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Rearranges(permutes) blocks of spatial data into depth.
Similar to ONNX SpaceToDepth operator:
https:<span class="cmt">//github.com/onnx/onnx/blob/master/docs/Operators.md#SpaceToDepth</span>
The output is a <span class="kw">new</span> tensor where the values from height and width dimension are
moved to the depth dimension. The reverse of <span class="kw">this</span> operation is ``depth_to_space``.
.. math::
    \begin{gather*}
    x \prime = reshape(x, [N, C, H / block\_size, block\_size, W / block\_size, block\_size]) \\
    x \prime \prime = transpose(x \prime, [<span class="num">0</span>, <span class="num">3</span>, <span class="num">5</span>, <span class="num">1</span>, <span class="num">2</span>, <span class="num">4</span>]) \\
    y = reshape(x \prime \prime, [N, C * (block\_size ^ <span class="num">2</span>), H / block\_size, W / block\_size])
    \end{gather*}
where :math:`x` is an input tensor <span class="kw">with</span> default layout as :math:`[N, C, H, W]`: [batch, channels, height, width]
and :math:`y` is the output tensor of layout :math:`[N, C * (block\_size ^ <span class="num">2</span>), H / block\_size, W / block\_size]`
Example::
  x = `[ [`[ [<span class="num">0</span>, <span class="num">6</span>, <span class="num">1</span>, <span class="num">7</span>, <span class="num">2</span>, <span class="num">8</span>],
         [<span class="num">12</span>, <span class="num">18</span>, <span class="num">13</span>, <span class="num">19</span>, <span class="num">14</span>, <span class="num">20</span>],
         [<span class="num">3</span>, <span class="num">9</span>, <span class="num">4</span>, <span class="num">10</span>, <span class="num">5</span>, <span class="num">11</span>],
         [<span class="num">15</span>, <span class="num">21</span>, <span class="num">16</span>, <span class="num">22</span>, <span class="num">17</span>, <span class="num">23</span>] ] ] ]
  space_to_depth(x, <span class="num">2</span>) = `[ [`[ [<span class="num">0</span>, <span class="num">1</span>, <span class="num">2</span>],
                            [<span class="num">3</span>, <span class="num">4</span>, <span class="num">5</span>] ],
                           `[ [<span class="num">6</span>, <span class="num">7</span>, <span class="num">8</span>],
                            [<span class="num">9</span>, <span class="num">10</span>, <span class="num">11</span>] ],
                           `[ [<span class="num">12</span>, <span class="num">13</span>, <span class="num">14</span>],
                            [<span class="num">15</span>, <span class="num">16</span>, <span class="num">17</span>] ],
                           `[ [<span class="num">18</span>, <span class="num">19</span>, <span class="num">20</span>],
                            [<span class="num">21</span>, <span class="num">22</span>, <span class="num">23</span>] ] ] ]


Defined in src/operator/tensor/matrix_op.cc:L1018</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input ndarray</p></dd><dt class="param">block_size</dt><dd class="cmt"><p>Blocks of [block_size. block_size] are moved</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#split" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="split(po:org.apache.mxnet.javaapi.splitParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="split(splitParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">split</span><span class="params">(<span name="po">po: <a href="splitParam.html" class="extype" name="org.apache.mxnet.javaapi.splitParam">splitParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@split(po:org.apache.mxnet.javaapi.splitParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Splits an array along a particular axis into multiple sub-arrays.

.. note:: ``SliceChannel`` is deprecated. Use ``split`` instead.

**Note** that `num_outputs` should evenly divide the length of the axis
along which to split the array.

Example::

   x  = `[ `[ [ <span class="num">1.</span>]
          [ <span class="num">2.</span>] ]
         `[ [ <span class="num">3.</span>]
          [ <span class="num">4.</span>] ]
         `[ [ <span class="num">5.</span>]
          [ <span class="num">6.</span>] ] ]
   x.shape = (<span class="num">3</span>, <span class="num">2</span>, <span class="num">1</span>)

   y = split(x, axis=<span class="num">1</span>, num_outputs=<span class="num">2</span>) <span class="cmt">// a list of 2 arrays with shape (3, 1, 1)</span>
   y = `[ `[ [ <span class="num">1.</span>] ]
        `[ [ <span class="num">3.</span>] ]
        `[ [ <span class="num">5.</span>] ] ]

       `[ `[ [ <span class="num">2.</span>] ]
        `[ [ <span class="num">4.</span>] ]
        `[ [ <span class="num">6.</span>] ] ]

   y[<span class="num">0</span>].shape = (<span class="num">3</span>, <span class="num">1</span>, <span class="num">1</span>)

   z = split(x, axis=<span class="num">0</span>, num_outputs=<span class="num">3</span>) <span class="cmt">// a list of 3 arrays with shape (1, 2, 1)</span>
   z = `[ `[ [ <span class="num">1.</span>]
         [ <span class="num">2.</span>] ] ]

       `[ `[ [ <span class="num">3.</span>]
         [ <span class="num">4.</span>] ] ]

       `[ `[ [ <span class="num">5.</span>]
         [ <span class="num">6.</span>] ] ]

   z[<span class="num">0</span>].shape = (<span class="num">1</span>, <span class="num">2</span>, <span class="num">1</span>)

`squeeze_axis=<span class="num">1</span>` removes the axis <span class="kw">with</span> length <span class="num">1</span> from the shapes of the output arrays.
**Note** that setting `squeeze_axis` to ``<span class="num">1</span>`` removes axis <span class="kw">with</span> length <span class="num">1</span> only
along the `axis` which it is split.
Also `squeeze_axis` can be set to <span class="kw">true</span> only <span class="kw">if</span> ``input.shape[axis] == num_outputs``.

Example::

   z = split(x, axis=<span class="num">0</span>, num_outputs=<span class="num">3</span>, squeeze_axis=<span class="num">1</span>) <span class="cmt">// a list of 3 arrays with shape (2, 1)</span>
   z = `[ [ <span class="num">1.</span>]
        [ <span class="num">2.</span>] ]

       `[ [ <span class="num">3.</span>]
        [ <span class="num">4.</span>] ]

       `[ [ <span class="num">5.</span>]
        [ <span class="num">6.</span>] ]
   z[<span class="num">0</span>].shape = (<span class="num">2</span> ,<span class="num">1</span> )



Defined in src/operator/slice_channel.cc:L106</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sqrt" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sqrt(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sqrt(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sqrt</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sqrt(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise square-root value of the input.

.. math::
   \textrm{sqrt}(x) = \sqrt{x}

Example::

   sqrt([<span class="num">4</span>, <span class="num">9</span>, <span class="num">16</span>]) = [<span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>]

The storage <span class="kw">type</span> of ``sqrt`` output depends upon the input storage <span class="kw">type</span>:

   - sqrt(default) = default
   - sqrt(row_sparse) = row_sparse
   - sqrt(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_pow.cc:L170</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#square" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="square(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="square(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">square</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@square(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns element-wise squared value of the input.

.. math::
   square(x) = x^<span class="num">2</span>

Example::

   square([<span class="num">2</span>, <span class="num">3</span>, <span class="num">4</span>]) = [<span class="num">4</span>, <span class="num">9</span>, <span class="num">16</span>]

The storage <span class="kw">type</span> of ``square`` output depends upon the input storage <span class="kw">type</span>:

   - square(default) = default
   - square(row_sparse) = row_sparse
   - square(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_pow.cc:L119</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#squeeze" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="squeeze(data:org.apache.mxnet.javaapi.NDArray,axis:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="squeeze(NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">squeeze</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="axis">axis: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@squeeze(data:org.apache.mxnet.javaapi.NDArray,axis:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Remove single-dimensional entries from the shape of an array.
Same behavior of defining the output tensor shape as numpy.squeeze <span class="kw">for</span> the most of cases.
See the following note <span class="kw">for</span> exception.
Examples::
  data = `[ `[ [<span class="num">0</span>], [<span class="num">1</span>], [<span class="num">2</span>] ] ]
  squeeze(data) = [<span class="num">0</span>, <span class="num">1</span>, <span class="num">2</span>]
  squeeze(data, axis=<span class="num">0</span>) = `[ [<span class="num">0</span>], [<span class="num">1</span>], [<span class="num">2</span>] ]
  squeeze(data, axis=<span class="num">2</span>) = `[ [<span class="num">0</span>, <span class="num">1</span>, <span class="num">2</span>] ]
  squeeze(data, axis=(<span class="num">0</span>, <span class="num">2</span>)) = [<span class="num">0</span>, <span class="num">1</span>, <span class="num">2</span>]
.. Note::
  The output of <span class="kw">this</span> operator will keep at least one dimension not removed. For example,
  squeeze(`[ `[ [<span class="num">4</span>] ] ]) = [<span class="num">4</span>], <span class="kw">while</span> in numpy.squeeze, the output will become a scalar.</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>data to squeeze</p></dd><dt class="param">axis</dt><dd class="cmt"><p>Selects a subset of the single-dimensional entries in the shape. If an axis is selected with shape entry greater than one, an error is raised.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#stack" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="stack(data:Array[org.apache.mxnet.javaapi.NDArray],axis:Integer,num_args:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="stack(Array[NDArray],Integer,Integer,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">stack</span><span class="params">(<span name="data">data: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>, <span name="axis">axis: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="num_args">num_args: <span class="extype" name="java.lang.Integer">Integer</span></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@stack(data:Array[org.apache.mxnet.javaapi.NDArray],axis:Integer,num_args:Integer,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Join a sequence of arrays along a <span class="kw">new</span> axis.
The axis parameter specifies the index of the <span class="kw">new</span> axis in the dimensions of the
result. For example, <span class="kw">if</span> axis=<span class="num">0</span> it will be the first dimension and <span class="kw">if</span> axis=-<span class="num">1</span> it
will be the last dimension.
Examples::
  x = [<span class="num">1</span>, <span class="num">2</span>]
  y = [<span class="num">3</span>, <span class="num">4</span>]
  stack(x, y) = `[ [<span class="num">1</span>, <span class="num">2</span>],
                 [<span class="num">3</span>, <span class="num">4</span>] ]
  stack(x, y, axis=<span class="num">1</span>) = `[ [<span class="num">1</span>, <span class="num">3</span>],
                         [<span class="num">2</span>, <span class="num">4</span>] ]</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>List of arrays to stack</p></dd><dt class="param">axis</dt><dd class="cmt"><p>The axis in the result array along which the input arrays are stacked.</p></dd><dt class="param">num_args</dt><dd class="cmt"><p>Number of inputs to be stacked.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#stop_gradient" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="stop_gradient(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="stop_gradient(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">stop_gradient</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@stop_gradient(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Stops gradient computation.

Stops the accumulated gradient of the inputs from flowing through <span class="kw">this</span> operator
in the backward direction. In other words, <span class="kw">this</span> operator prevents the contribution
of its inputs to be taken into account <span class="kw">for</span> computing gradients.

Example::

  v1 = [<span class="num">1</span>, <span class="num">2</span>]
  v2 = [<span class="num">0</span>, <span class="num">1</span>]
  a = Variable(<span class="lit">'a'</span>)
  b = Variable(<span class="lit">'b'</span>)
  b_stop_grad = stop_gradient(<span class="num">3</span> * b)
  loss = MakeLoss(b_stop_grad + a)

  executor = loss.simple_bind(ctx=cpu(), a=(<span class="num">1</span>,<span class="num">2</span>), b=(<span class="num">1</span>,<span class="num">2</span>))
  executor.forward(is_train=True, a=v1, b=v2)
  executor.outputs
  [ <span class="num">1.</span>  <span class="num">5.</span>]

  executor.backward()
  executor.grad_arrays
  [ <span class="num">0.</span>  <span class="num">0.</span>]
  [ <span class="num">1.</span>  <span class="num">1.</span>]



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L325</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sum" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sum(po:org.apache.mxnet.javaapi.sumParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sum(sumParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sum</span><span class="params">(<span name="po">po: <a href="sumParam.html" class="extype" name="org.apache.mxnet.javaapi.sumParam">sumParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sum(po:org.apache.mxnet.javaapi.sumParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the sum of array elements over given axes.

.. Note::

  `sum` and `sum_axis` are equivalent.
  For ndarray of csr storage <span class="kw">type</span> summation along axis <span class="num">0</span> and axis <span class="num">1</span> is supported.
  Setting keepdims or exclude to True will cause a fallback to dense operator.

Example::

  data = `[ `[ [<span class="num">1</span>, <span class="num">2</span>], [<span class="num">2</span>, <span class="num">3</span>], [<span class="num">1</span>, <span class="num">3</span>] ],
          `[ [<span class="num">1</span>, <span class="num">4</span>], [<span class="num">4</span>, <span class="num">3</span>], [<span class="num">5</span>, <span class="num">2</span>] ],
          `[ [<span class="num">7</span>, <span class="num">1</span>], [<span class="num">7</span>, <span class="num">2</span>], [<span class="num">7</span>, <span class="num">3</span>] ] ]

  sum(data, axis=<span class="num">1</span>)
  `[ [  <span class="num">4.</span>   <span class="num">8.</span>]
   [ <span class="num">10.</span>   <span class="num">9.</span>]
   [ <span class="num">21.</span>   <span class="num">6.</span>] ]

  sum(data, axis=[<span class="num">1</span>,<span class="num">2</span>])
  [ <span class="num">12.</span>  <span class="num">19.</span>  <span class="num">27.</span>]

  data = `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">0</span>],
          [<span class="num">3</span>, <span class="num">0</span>, <span class="num">1</span>],
          [<span class="num">4</span>, <span class="num">1</span>, <span class="num">0</span>] ]

  csr = cast_storage(data, <span class="lit">'csr'</span>)

  sum(csr, axis=<span class="num">0</span>)
  [ <span class="num">8.</span>  <span class="num">3.</span>  <span class="num">1.</span>]

  sum(csr, axis=<span class="num">1</span>)
  [ <span class="num">3.</span>  <span class="num">4.</span>  <span class="num">5.</span>]



Defined in src/operator/tensor/broadcast_reduce_sum_value.cc:L66</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#sum_axis" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="sum_axis(po:org.apache.mxnet.javaapi.sum_axisParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="sum_axis(sum_axisParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">sum_axis</span><span class="params">(<span name="po">po: <a href="sum_axisParam.html" class="extype" name="org.apache.mxnet.javaapi.sum_axisParam">sum_axisParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@sum_axis(po:org.apache.mxnet.javaapi.sum_axisParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the sum of array elements over given axes.

.. Note::

  `sum` and `sum_axis` are equivalent.
  For ndarray of csr storage <span class="kw">type</span> summation along axis <span class="num">0</span> and axis <span class="num">1</span> is supported.
  Setting keepdims or exclude to True will cause a fallback to dense operator.

Example::

  data = `[ `[ [<span class="num">1</span>, <span class="num">2</span>], [<span class="num">2</span>, <span class="num">3</span>], [<span class="num">1</span>, <span class="num">3</span>] ],
          `[ [<span class="num">1</span>, <span class="num">4</span>], [<span class="num">4</span>, <span class="num">3</span>], [<span class="num">5</span>, <span class="num">2</span>] ],
          `[ [<span class="num">7</span>, <span class="num">1</span>], [<span class="num">7</span>, <span class="num">2</span>], [<span class="num">7</span>, <span class="num">3</span>] ] ]

  sum(data, axis=<span class="num">1</span>)
  `[ [  <span class="num">4.</span>   <span class="num">8.</span>]
   [ <span class="num">10.</span>   <span class="num">9.</span>]
   [ <span class="num">21.</span>   <span class="num">6.</span>] ]

  sum(data, axis=[<span class="num">1</span>,<span class="num">2</span>])
  [ <span class="num">12.</span>  <span class="num">19.</span>  <span class="num">27.</span>]

  data = `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">0</span>],
          [<span class="num">3</span>, <span class="num">0</span>, <span class="num">1</span>],
          [<span class="num">4</span>, <span class="num">1</span>, <span class="num">0</span>] ]

  csr = cast_storage(data, <span class="lit">'csr'</span>)

  sum(csr, axis=<span class="num">0</span>)
  [ <span class="num">8.</span>  <span class="num">3.</span>  <span class="num">1.</span>]

  sum(csr, axis=<span class="num">1</span>)
  [ <span class="num">3.</span>  <span class="num">4.</span>  <span class="num">5.</span>]



Defined in src/operator/tensor/broadcast_reduce_sum_value.cc:L66</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#swapaxes" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="swapaxes(po:org.apache.mxnet.javaapi.swapaxesParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="swapaxes(swapaxesParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">swapaxes</span><span class="params">(<span name="po">po: <a href="swapaxesParam.html" class="extype" name="org.apache.mxnet.javaapi.swapaxesParam">swapaxesParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@swapaxes(po:org.apache.mxnet.javaapi.swapaxesParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Interchanges two axes of an array.

Examples::

  x = `[ [<span class="num">1</span>, <span class="num">2</span>, <span class="num">3</span>] ])
  swapaxes(x, <span class="num">0</span>, <span class="num">1</span>) = `[ [ <span class="num">1</span>],
                       [ <span class="num">2</span>],
                       [ <span class="num">3</span>] ]

  x = `[ `[ [ <span class="num">0</span>, <span class="num">1</span>],
        [ <span class="num">2</span>, <span class="num">3</span>] ],
       `[ [ <span class="num">4</span>, <span class="num">5</span>],
        [ <span class="num">6</span>, <span class="num">7</span>] ] ]  <span class="cmt">// (2,2,2) array</span>

 swapaxes(x, <span class="num">0</span>, <span class="num">2</span>) = `[ `[ [ <span class="num">0</span>, <span class="num">4</span>],
                       [ <span class="num">2</span>, <span class="num">6</span>] ],
                      `[ [ <span class="num">1</span>, <span class="num">5</span>],
                       [ <span class="num">3</span>, <span class="num">7</span>] ] ]


Defined in src/operator/swapaxis.cc:L69</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#take" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="take(po:org.apache.mxnet.javaapi.takeParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="take(takeParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">take</span><span class="params">(<span name="po">po: <a href="takeParam.html" class="extype" name="org.apache.mxnet.javaapi.takeParam">takeParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@take(po:org.apache.mxnet.javaapi.takeParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Takes elements from an input array along the given axis.

This function slices the input array along a particular axis <span class="kw">with</span> the provided indices.

Given data tensor of rank r &gt;= <span class="num">1</span>, and indices tensor of rank q, gather entries of the axis
dimension of data (by default outer-most one as axis=<span class="num">0</span>) indexed by indices, and concatenates them
in an output tensor of rank q + (r - <span class="num">1</span>).

Examples::

  x = [<span class="num">4.</span>  <span class="num">5.</span>  <span class="num">6.</span>]

  <span class="cmt">// Trivial case, take the second element along the first axis.</span>

  take(x, [<span class="num">1</span>]) = [ <span class="num">5.</span> ]

  <span class="cmt">// The other trivial case, axis=-1, take the third element along the first axis</span>

  take(x, [<span class="num">3</span>], axis=-<span class="num">1</span>, mode=<span class="lit">'clip'</span>) = [ <span class="num">6.</span> ]

  x = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>],
       [ <span class="num">3.</span>,  <span class="num">4.</span>],
       [ <span class="num">5.</span>,  <span class="num">6.</span>] ]

  <span class="cmt">// In this case we will get rows 0 and 1, then 1 and 2. Along axis 0</span>

  take(x, `[ [<span class="num">0</span>,<span class="num">1</span>],[<span class="num">1</span>,<span class="num">2</span>] ]) = `[ `[ [ <span class="num">1.</span>,  <span class="num">2.</span>],
                             [ <span class="num">3.</span>,  <span class="num">4.</span>] ],

                            `[ [ <span class="num">3.</span>,  <span class="num">4.</span>],
                             [ <span class="num">5.</span>,  <span class="num">6.</span>] ] ]

  <span class="cmt">// In this case we will get rows 0 and 1, then 1 and 2 (calculated by wrapping around).</span>
  <span class="cmt">// Along axis 1</span>

  take(x, `[ [<span class="num">0</span>, <span class="num">3</span>], [-<span class="num">1</span>, -<span class="num">2</span>] ], axis=<span class="num">1</span>, mode=<span class="lit">'wrap'</span>) = `[ `[ [ <span class="num">1.</span>  <span class="num">2.</span>]
                                                       [ <span class="num">2.</span>  <span class="num">1.</span>] ]

                                                      `[ [ <span class="num">3.</span>  <span class="num">4.</span>]
                                                       [ <span class="num">4.</span>  <span class="num">3.</span>] ]

                                                      `[ [ <span class="num">5.</span>  <span class="num">6.</span>]
                                                       [ <span class="num">6.</span>  <span class="num">5.</span>] ] ]

The storage <span class="kw">type</span> of ``take`` output depends upon the input storage <span class="kw">type</span>:

   - take(default, default) = default
   - take(csr, default, axis=<span class="num">0</span>) = csr



Defined in src/operator/tensor/indexing_op.cc:L776</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#tan" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="tan(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="tan(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">tan</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@tan(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Computes the element-wise tangent of the input array.

The input should be in radians (:math:`<span class="num">2</span>\pi` rad equals <span class="num">360</span> degrees).

.. math::
   tan([<span class="num">0</span>, \pi/<span class="num">4</span>, \pi/<span class="num">2</span>]) = [<span class="num">0</span>, <span class="num">1</span>, -inf]

The storage <span class="kw">type</span> of ``tan`` output depends upon the input storage <span class="kw">type</span>:

   - tan(default) = default
   - tan(row_sparse) = row_sparse
   - tan(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L140</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#tanh" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="tanh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="tanh(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">tanh</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@tanh(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the hyperbolic tangent of the input array, computed element-wise.

.. math::
   tanh(x) = sinh(x) / cosh(x)

The storage <span class="kw">type</span> of ``tanh`` output depends upon the input storage <span class="kw">type</span>:

   - tanh(default) = default
   - tanh(row_sparse) = row_sparse
   - tanh(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_trig.cc:L451</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#tile" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="tile(data:org.apache.mxnet.javaapi.NDArray,reps:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="tile(NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">tile</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="reps">reps: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@tile(data:org.apache.mxnet.javaapi.NDArray,reps:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Repeats the whole array multiple times.
If ``reps`` has length *d*, and input array has dimension of *n*. There are
three cases:
- **n=d**. Repeat *i*-th dimension of the input by ``reps[i]`` times::
    x = `[ [<span class="num">1</span>, <span class="num">2</span>],
         [<span class="num">3</span>, <span class="num">4</span>] ]
    tile(x, reps=(<span class="num">2</span>,<span class="num">3</span>)) = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
                           [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>],
                           [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
                           [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>] ]
- **n&gt;d**. ``reps`` is promoted to length *n* by pre-pending <span class="num">1</span>'s to it. Thus <span class="kw">for</span>
  an input shape ``(<span class="num">2</span>,<span class="num">3</span>)``, ``repos=(<span class="num">2</span>,)`` is treated as ``(<span class="num">1</span>,<span class="num">2</span>)``::
    tile(x, reps=(<span class="num">2</span>,)) = `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
                          [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>] ]
- **n&lt;d**. The input is promoted to be d-dimensional by prepending <span class="kw">new</span> axes. So a
  shape ``(<span class="num">2</span>,<span class="num">2</span>)`` array is promoted to ``(<span class="num">1</span>,<span class="num">2</span>,<span class="num">2</span>)`` <span class="kw">for</span> <span class="num">3</span>-D replication::
    tile(x, reps=(<span class="num">2</span>,<span class="num">2</span>,<span class="num">3</span>)) = `[ `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
                              [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>],
                              [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
                              [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>] ],
                             `[ [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
                              [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>],
                              [ <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>],
                              [ <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>,  <span class="num">3.</span>,  <span class="num">4.</span>] ] ]


Defined in src/operator/tensor/matrix_op.cc:L795</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Input data array</p></dd><dt class="param">reps</dt><dd class="cmt"><p>The number of times for repeating the tensor a. Each dim size of reps must be a positive integer. If reps has length d, the result will have dimension of max(d, a.ndim); If a.ndim &lt; d, a is promoted to be d-dimensional by prepending new axes. If a.ndim &gt; d, reps is promoted to a.ndim by pre-pending 1's to it.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#topk" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="topk(po:org.apache.mxnet.javaapi.topkParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="topk(topkParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">topk</span><span class="params">(<span name="po">po: <a href="topkParam.html" class="extype" name="org.apache.mxnet.javaapi.topkParam">topkParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@topk(po:org.apache.mxnet.javaapi.topkParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Returns the indices of the top *k* elements in an input array along the given
 axis (by default).
 If ret_type is set to <span class="lit">'value'</span> returns the value of top *k* elements (instead of indices).
 In <span class="kw">case</span> of ret_type = <span class="lit">'both'</span>, both value and index would be returned.
 The returned elements will be sorted.

Examples::

  x = `[ [ <span class="num">0.3</span>,  <span class="num">0.2</span>,  <span class="num">0.4</span>],
       [ <span class="num">0.1</span>,  <span class="num">0.3</span>,  <span class="num">0.2</span>] ]

  <span class="cmt">// returns an index of the largest element on last axis</span>
  topk(x) = `[ [ <span class="num">2.</span>],
             [ <span class="num">1.</span>] ]

  <span class="cmt">// returns the value of top-2 largest elements on last axis</span>
  topk(x, ret_typ=<span class="lit">'value'</span>, k=<span class="num">2</span>) = `[ [ <span class="num">0.4</span>,  <span class="num">0.3</span>],
                                   [ <span class="num">0.3</span>,  <span class="num">0.2</span>] ]

  <span class="cmt">// returns the value of top-2 smallest elements on last axis</span>
  topk(x, ret_typ=<span class="lit">'value'</span>, k=<span class="num">2</span>, is_ascend=<span class="num">1</span>) = `[ [ <span class="num">0.2</span> ,  <span class="num">0.3</span>],
                                               [ <span class="num">0.1</span> ,  <span class="num">0.2</span>] ]

  <span class="cmt">// returns the value of top-2 largest elements on axis 0</span>
  topk(x, axis=<span class="num">0</span>, ret_typ=<span class="lit">'value'</span>, k=<span class="num">2</span>) = `[ [ <span class="num">0.3</span>,  <span class="num">0.3</span>,  <span class="num">0.4</span>],
                                           [ <span class="num">0.1</span>,  <span class="num">0.2</span>,  <span class="num">0.2</span>] ]

  <span class="cmt">// flattens and then returns list of both values and indices</span>
  topk(x, ret_typ=<span class="lit">'both'</span>, k=<span class="num">2</span>) = `[ `[ [ <span class="num">0.4</span>,  <span class="num">0.3</span>], [ <span class="num">0.3</span>,  <span class="num">0.2</span>] ] ,  `[ [ <span class="num">2.</span>,  <span class="num">0.</span>], [ <span class="num">1.</span>,  <span class="num">2.</span>] ] ]



Defined in src/operator/tensor/ordering_op.cc:L67</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#transpose" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="transpose(data:org.apache.mxnet.javaapi.NDArray,axes:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="transpose(NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">transpose</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="axes">axes: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@transpose(data:org.apache.mxnet.javaapi.NDArray,axes:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Permutes the dimensions of an array.
Examples::
  x = `[ [ <span class="num">1</span>, <span class="num">2</span>],
       [ <span class="num">3</span>, <span class="num">4</span>] ]
  transpose(x) = `[ [ <span class="num">1.</span>,  <span class="num">3.</span>],
                  [ <span class="num">2.</span>,  <span class="num">4.</span>] ]
  x = `[ `[ [ <span class="num">1.</span>,  <span class="num">2.</span>],
        [ <span class="num">3.</span>,  <span class="num">4.</span>] ],
       `[ [ <span class="num">5.</span>,  <span class="num">6.</span>],
        [ <span class="num">7.</span>,  <span class="num">8.</span>] ] ]
  transpose(x) = `[ `[ [ <span class="num">1.</span>,  <span class="num">5.</span>],
                   [ <span class="num">3.</span>,  <span class="num">7.</span>] ],
                  `[ [ <span class="num">2.</span>,  <span class="num">6.</span>],
                   [ <span class="num">4.</span>,  <span class="num">8.</span>] ] ]
  transpose(x, axes=(<span class="num">1</span>,<span class="num">0</span>,<span class="num">2</span>)) = `[ `[ [ <span class="num">1.</span>,  <span class="num">2.</span>],
                                 [ <span class="num">5.</span>,  <span class="num">6.</span>] ],
                                `[ [ <span class="num">3.</span>,  <span class="num">4.</span>],
                                 [ <span class="num">7.</span>,  <span class="num">8.</span>] ] ]


Defined in src/operator/tensor/matrix_op.cc:L327</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Source input</p></dd><dt class="param">axes</dt><dd class="cmt"><p>Target axis order. By default the axes will be inverted.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#trunc" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="trunc(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="trunc(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">trunc</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@trunc(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Return the element-wise truncated value of the input.

The truncated value of the scalar x is the nearest integer i which is closer to
zero than x is. In short, the fractional part of the signed number x is discarded.

Example::

   trunc([-<span class="num">2.1</span>, -<span class="num">1.9</span>, <span class="num">1.5</span>, <span class="num">1.9</span>, <span class="num">2.1</span>]) = [-<span class="num">2.</span>, -<span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">2.</span>]

The storage <span class="kw">type</span> of ``trunc`` output depends upon the input storage <span class="kw">type</span>:

   - trunc(default) = default
   - trunc(row_sparse) = row_sparse
   - trunc(csr) = csr



Defined in src/operator/tensor/elemwise_unary_op_basic.cc:L856</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input array.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#uniform" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="uniform(po:org.apache.mxnet.javaapi.uniformParam):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="uniform(uniformParam):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">uniform</span><span class="params">(<span name="po">po: <a href="uniformParam.html" class="extype" name="org.apache.mxnet.javaapi.uniformParam">uniformParam</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@uniform(po:org.apache.mxnet.javaapi.uniformParam):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Draw random samples from a uniform distribution.

.. note:: The existing alias ``uniform`` is deprecated.

Samples are uniformly distributed over the half-open interval *[low, high)*
(includes *low*, but excludes *high*).

Example::

   uniform(low=<span class="num">0</span>, high=<span class="num">1</span>, shape=(<span class="num">2</span>,<span class="num">2</span>)) = `[ [ <span class="num">0.60276335</span>,  <span class="num">0.85794562</span>],
                                          [ <span class="num">0.54488319</span>,  <span class="num">0.84725171</span>] ]



Defined in src/operator/random/sample_op.cc:L95</pre></div><dl class="paramcmts block"><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#unravel_index" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="unravel_index(data:org.apache.mxnet.javaapi.NDArray,shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="unravel_index(NDArray,Shape,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">unravel_index</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="shape">shape: <a href="Shape.html" class="extype" name="org.apache.mxnet.javaapi.Shape">Shape</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@unravel_index(data:org.apache.mxnet.javaapi.NDArray,shape:org.apache.mxnet.javaapi.Shape,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Converts an array of flat indices into a batch of index arrays. The operator follows numpy conventions so a single multi index is given by a column of the output matrix. The leading dimension may be left unspecified by using -<span class="num">1</span> as placeholder.

Examples::

   A = [<span class="num">22</span>,<span class="num">41</span>,<span class="num">37</span>]
   unravel(A, shape=(<span class="num">7</span>,<span class="num">6</span>)) = `[ [<span class="num">3</span>,<span class="num">6</span>,<span class="num">6</span>],[<span class="num">4</span>,<span class="num">5</span>,<span class="num">1</span>] ]
   unravel(A, shape=(-<span class="num">1</span>,<span class="num">6</span>)) = `[ [<span class="num">3</span>,<span class="num">6</span>,<span class="num">6</span>],[<span class="num">4</span>,<span class="num">5</span>,<span class="num">1</span>] ]



Defined in src/operator/tensor/ravel.cc:L67</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>Array of flat indices</p></dd><dt class="param">shape</dt><dd class="cmt"><p>Shape of the array into which the multi-indices apply.</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#where" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="where(condition:org.apache.mxnet.javaapi.NDArray,x:org.apache.mxnet.javaapi.NDArray,y:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="where(NDArray,NDArray,NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">where</span><span class="params">(<span name="condition">condition: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="x">x: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="y">y: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@where(condition:org.apache.mxnet.javaapi.NDArray,x:org.apache.mxnet.javaapi.NDArray,y:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Return the elements, either from x or y, depending on the condition.

Given three ndarrays, condition, x, and y, <span class="kw">return</span> an ndarray <span class="kw">with</span> the elements from x or y,
depending on the elements from condition are <span class="kw">true</span> or <span class="kw">false</span>. x and y must have the same shape.
If condition has the same shape as x, each element in the output array is from x <span class="kw">if</span> the
corresponding element in the condition is <span class="kw">true</span>, and from y <span class="kw">if</span> <span class="kw">false</span>.

If condition does not have the same shape as x, it must be a <span class="num">1</span>D array whose size is
the same as x's first dimension size. Each row of the output array is from x's row
<span class="kw">if</span> the corresponding element from condition is <span class="kw">true</span>, and from y's row <span class="kw">if</span> <span class="kw">false</span>.

Note that all non-zero values are interpreted as ``True`` in condition.

Examples::

  x = `[ [<span class="num">1</span>, <span class="num">2</span>], [<span class="num">3</span>, <span class="num">4</span>] ]
  y = `[ [<span class="num">5</span>, <span class="num">6</span>], [<span class="num">7</span>, <span class="num">8</span>] ]
  cond = `[ [<span class="num">0</span>, <span class="num">1</span>], [-<span class="num">1</span>, <span class="num">0</span>] ]

  where(cond, x, y) = `[ [<span class="num">5</span>, <span class="num">2</span>], [<span class="num">3</span>, <span class="num">8</span>] ]

  csr_cond = cast_storage(cond, <span class="lit">'csr'</span>)

  where(csr_cond, x, y) = `[ [<span class="num">5</span>, <span class="num">2</span>], [<span class="num">3</span>, <span class="num">8</span>] ]



Defined in src/operator/tensor/control_flow_op.cc:L56</pre></div><dl class="paramcmts block"><dt class="param">condition</dt><dd class="cmt"><p>condition array</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li><li name="org.apache.mxnet.javaapi.NDArrayBase#zeros_like" visbl="pub" data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="zeros_like(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]"></a>
      <a id="zeros_like(NDArray,NDArray):Array[NDArray]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">zeros_like</span><span class="params">(<span name="data">data: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>, <span name="out">out: <a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a></span>)</span><span class="result">: <span class="extype" name="scala.Array">Array</span>[<a href="NDArray.html" class="extype" name="org.apache.mxnet.javaapi.NDArray">NDArray</a>]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@zeros_like(data:org.apache.mxnet.javaapi.NDArray,out:org.apache.mxnet.javaapi.NDArray):Array[org.apache.mxnet.javaapi.NDArray]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <p class="shortcomment cmt"></p><div class="fullcomment"><div class="comment cmt"><p></p><pre>Return an array of zeros <span class="kw">with</span> the same shape, <span class="kw">type</span> and storage <span class="kw">type</span>
as the input array.

The storage <span class="kw">type</span> of ``zeros_like`` output depends on the storage <span class="kw">type</span> of the input

- zeros_like(row_sparse) = row_sparse
- zeros_like(csr) = csr
- zeros_like(default) = default

Examples::

  x = `[ [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>],
       [ <span class="num">1.</span>,  <span class="num">1.</span>,  <span class="num">1.</span>] ]

  zeros_like(x) = `[ [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>],
                   [ <span class="num">0.</span>,  <span class="num">0.</span>,  <span class="num">0.</span>] ]</pre></div><dl class="paramcmts block"><dt class="param">data</dt><dd class="cmt"><p>The input</p></dd><dt>returns</dt><dd class="cmt"><p>Array[org.apache.mxnet.javaapi.NDArray]</p></dd></dl><dl class="attributes block"> <dt>Annotations</dt><dd>
                <span class="name">@Experimental</span><span class="args">()</span>
              
        </dd></dl></div>
    </li></ol>
            </div>

        <div id="values" class="values members">
              <h3>Concrete Value Members</h3>
              <ol><li name="scala.AnyRef#!=" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="!=(x$1:Any):Boolean"></a>
      <a id="!=(Any):Boolean"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span title="gt4s: $bang$eq" class="name">!=</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@!=(x$1:Any):Boolean" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
    </li><li name="scala.AnyRef###" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="##():Int"></a>
      <a id="##():Int"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span title="gt4s: $hash$hash" class="name">##</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@##():Int" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
    </li><li name="scala.AnyRef#==" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="==(x$1:Any):Boolean"></a>
      <a id="==(Any):Boolean"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span title="gt4s: $eq$eq" class="name">==</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@==(x$1:Any):Boolean" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
    </li><li name="scala.Any#asInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="asInstanceOf[T0]:T0"></a>
      <a id="asInstanceOf[T0]:T0"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">asInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Any.asInstanceOf.T0">T0</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@asInstanceOf[T0]:T0" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
    </li><li name="scala.AnyRef#clone" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="clone():Object"></a>
      <a id="clone():AnyRef"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">clone</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.AnyRef">AnyRef</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@clone():Object" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
                <span class="name">@throws</span><span class="args">(<span>
      
      <span class="defval" name="classOf[java.lang.CloneNotSupportedException]">...</span>
    </span>)</span>
              
        </dd></dl></div>
    </li><li name="scala.AnyRef#eq" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="eq(x$1:AnyRef):Boolean"></a>
      <a id="eq(AnyRef):Boolean"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">eq</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@eq(x$1:AnyRef):Boolean" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
    </li><li name="scala.AnyRef#equals" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="equals(x$1:Any):Boolean"></a>
      <a id="equals(Any):Boolean"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">equals</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Any">Any</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@equals(x$1:Any):Boolean" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
    </li><li name="scala.AnyRef#finalize" visbl="prt" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="finalize():Unit"></a>
      <a id="finalize():Unit"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">finalize</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@finalize():Unit" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Attributes</dt><dd>protected[<a href="../../../../java$lang.html" class="extype" name="java.lang">java.lang</a>] </dd><dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
                <span class="name">@throws</span><span class="args">(<span>
      
      <span class="symbol">classOf[java.lang.Throwable]</span>
    </span>)</span>
              
        </dd></dl></div>
    </li><li name="scala.AnyRef#getClass" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="getClass():Class[_]"></a>
      <a id="getClass():Class[_]"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">getClass</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.Class">Class</span>[_]</span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@getClass():Class[_]" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
    </li><li name="scala.AnyRef#hashCode" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="hashCode():Int"></a>
      <a id="hashCode():Int"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">hashCode</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Int">Int</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@hashCode():Int" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
    </li><li name="scala.Any#isInstanceOf" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="isInstanceOf[T0]:Boolean"></a>
      <a id="isInstanceOf[T0]:Boolean"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">isInstanceOf</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@isInstanceOf[T0]:Boolean" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>Any</dd></dl></div>
    </li><li name="scala.AnyRef#ne" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="ne(x$1:AnyRef):Boolean"></a>
      <a id="ne(AnyRef):Boolean"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">ne</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.AnyRef">AnyRef</span></span>)</span><span class="result">: <span class="extype" name="scala.Boolean">Boolean</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@ne(x$1:AnyRef):Boolean" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
    </li><li name="scala.AnyRef#notify" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="notify():Unit"></a>
      <a id="notify():Unit"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">notify</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@notify():Unit" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
    </li><li name="scala.AnyRef#notifyAll" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="notifyAll():Unit"></a>
      <a id="notifyAll():Unit"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">notifyAll</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@notifyAll():Unit" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
    </li><li name="scala.AnyRef#synchronized" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="synchronized[T0](x$1:=&gt;T0):T0"></a>
      <a id="synchronized[T0](⇒T0):T0"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">synchronized</span><span class="tparams">[<span name="T0">T0</span>]</span><span class="params">(<span name="arg0">arg0: ⇒ <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>)</span><span class="result">: <span class="extype" name="java.lang.AnyRef.synchronized.T0">T0</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@synchronized[T0](x$1:=&gt;T0):T0" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd></dl></div>
    </li><li name="scala.AnyRef#toString" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="toString():String"></a>
      <a id="toString():String"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">toString</span><span class="params">()</span><span class="result">: <span class="extype" name="java.lang.String">String</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@toString():String" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef → Any</dd></dl></div>
    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="wait():Unit"></a>
      <a id="wait():Unit"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">wait</span><span class="params">()</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@wait():Unit" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
                <span class="name">@throws</span><span class="args">(<span>
      
      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
    </span>)</span>
              
        </dd></dl></div>
    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="wait(x$1:Long,x$2:Int):Unit"></a>
      <a id="wait(Long,Int):Unit"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>, <span name="arg1">arg1: <span class="extype" name="scala.Int">Int</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@wait(x$1:Long,x$2:Int):Unit" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
                <span class="name">@throws</span><span class="args">(<span>
      
      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
    </span>)</span>
              
        </dd></dl></div>
    </li><li name="scala.AnyRef#wait" visbl="pub" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="wait(x$1:Long):Unit"></a>
      <a id="wait(Long):Unit"></a>
      <h4 class="signature">
      <span class="modifier_kind">
        <span class="modifier">final </span>
        <span class="kind">def</span>
      </span>
      <span class="symbol">
        <span class="name">wait</span><span class="params">(<span name="arg0">arg0: <span class="extype" name="scala.Long">Long</span></span>)</span><span class="result">: <span class="extype" name="scala.Unit">Unit</span></span>
      </span>
      </h4><span class="permalink">
      <a href="../../../../index.html#org.apache.mxnet.javaapi.NDArrayBase@wait(x$1:Long):Unit" title="Permalink" target="_top">
        <img src="../../../../lib/permalink.png" alt="Permalink" />
      </a>
    </span>
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd>AnyRef</dd><dt>Annotations</dt><dd>
                <span class="name">@throws</span><span class="args">(<span>
      
      <span class="defval" name="classOf[java.lang.InterruptedException]">...</span>
    </span>)</span>
              
        </dd></dl></div>
    </li></ol>
            </div>

        

        
        </div>

        <div id="inheritedMembers">
        <div class="parent" name="scala.AnyRef">
              <h3>Inherited from <span class="extype" name="scala.AnyRef">AnyRef</span></h3>
            </div><div class="parent" name="scala.Any">
              <h3>Inherited from <span class="extype" name="scala.Any">Any</span></h3>
            </div>
        
        </div>

        <div id="groupedMembers">
        <div class="group" name="Ungrouped">
              <h3>Ungrouped</h3>
              
            </div>
        </div>

      </div>

      <div id="tooltip"></div>

      <div id="footer">  </div>


    </body>
      </html>
