

``mx.infer.rnn.one``
========================================

Description
----------------------

Inference for one-to-one fusedRNN (CUDA) models

Usage
----------

.. code:: r

	mx.infer.rnn.one(

	  infer.data,

	  symbol,

	  arg.params,

	  aux.params,

	  input.params = NULL,

	  ctx = mx.cpu()

	)

Arguments
------------------

+----------------------------------------+------------------------------------------------------------+
| Argument                               | Description                                                |
+========================================+============================================================+
| ``infer.data``                         | Data iterator created by mx.io.bucket.iter                 |
+----------------------------------------+------------------------------------------------------------+
| ``symbol``                             | Symbol used for inference                                  |
+----------------------------------------+------------------------------------------------------------+
| ``ctx``                                |                                                            |
+----------------------------------------+------------------------------------------------------------+



