.. index:: pair: struct; dnnl::lstm_forward::primitive_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc: struct dnnl::lstm_forward::primitive_desc ========================================= .. toctree:: :hidden: Overview ~~~~~~~~ Primitive descriptor for an LSTM forward propagation primitive. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include struct primitive_desc: public :ref:`dnnl::rnn_primitive_desc_base` { // construction :ref:`primitive_desc`(); :ref:`primitive_desc`( const :ref:`engine`& aengine, :ref:`prop_kind` aprop_kind, :ref:`rnn_direction` direction, const :ref:`memory::desc`& src_layer_desc, const :ref:`memory::desc`& src_iter_desc, const :ref:`memory::desc`& src_iter_c_desc, const :ref:`memory::desc`& weights_layer_desc, const :ref:`memory::desc`& weights_iter_desc, const :ref:`memory::desc`& weights_peephole_desc, const :ref:`memory::desc`& weights_projection_desc, const :ref:`memory::desc`& bias_desc, const :ref:`memory::desc`& dst_layer_desc, const :ref:`memory::desc`& dst_iter_desc, const :ref:`memory::desc`& dst_iter_c_desc, const :ref:`primitive_attr`& attr = :ref:`default_attr`(), bool allow_empty = false ); :ref:`primitive_desc`( const :ref:`engine`& aengine, :ref:`prop_kind` aprop_kind, :ref:`rnn_direction` direction, const :ref:`memory::desc`& src_layer_desc, const :ref:`memory::desc`& src_iter_desc, const :ref:`memory::desc`& src_iter_c_desc, const :ref:`memory::desc`& weights_layer_desc, const :ref:`memory::desc`& weights_iter_desc, const :ref:`memory::desc`& weights_peephole_desc, const :ref:`memory::desc`& bias_desc, const :ref:`memory::desc`& dst_layer_desc, const :ref:`memory::desc`& dst_iter_desc, const :ref:`memory::desc`& dst_iter_c_desc, const :ref:`primitive_attr`& attr = :ref:`default_attr`(), bool allow_empty = false ); :ref:`primitive_desc`( const :ref:`engine`& aengine, :ref:`prop_kind` aprop_kind, :ref:`rnn_direction` direction, const :ref:`memory::desc`& src_layer_desc, const :ref:`memory::desc`& src_iter_desc, const :ref:`memory::desc`& src_iter_c_desc, const :ref:`memory::desc`& weights_layer_desc, const :ref:`memory::desc`& weights_iter_desc, const :ref:`memory::desc`& bias_desc, const :ref:`memory::desc`& dst_layer_desc, const :ref:`memory::desc`& dst_iter_desc, const :ref:`memory::desc`& dst_iter_c_desc, const :ref:`primitive_attr`& attr = :ref:`default_attr`(), bool allow_empty = false ); :ref:`primitive_desc`(:ref:`dnnl_primitive_desc_t` pd); // methods :ref:`memory::desc` :ref:`src_layer_desc`() const; :ref:`memory::desc` :ref:`src_iter_desc`() const; :ref:`memory::desc` :ref:`src_iter_c_desc`() const; :ref:`memory::desc` :ref:`weights_layer_desc`() const; :ref:`memory::desc` :ref:`weights_iter_desc`() const; :ref:`memory::desc` :ref:`weights_peephole_desc`() const; :ref:`memory::desc` :ref:`weights_projection_desc`() const; :ref:`memory::desc` :ref:`bias_desc`() const; :ref:`memory::desc` :ref:`dst_layer_desc`() const; :ref:`memory::desc` :ref:`dst_iter_desc`() const; :ref:`memory::desc` :ref:`dst_iter_c_desc`() const; :ref:`memory::desc` :ref:`workspace_desc`() const; :ref:`algorithm` :ref:`get_cell_kind`() const; :ref:`prop_kind` :ref:`get_prop_kind`() const; :ref:`rnn_direction` :ref:`get_direction`() const; }; Inherited Members ----------------- .. ref-code-block:: cpp :class: doxyrest-overview-inherited-code-block public: // methods :ref:`handle`& :ref:`operator =` (const :ref:`handle`&); :ref:`handle`& :ref:`operator =` (:ref:`handle`&&); void :ref:`reset`(T t, bool weak = false); T :ref:`get`(bool allow_empty = false) const; :ref:`operator T` () const; :ref:`operator bool` () const; bool :ref:`operator ==` (const :ref:`handle`& other) const; bool :ref:`operator !=` (const :ref:`handle`& other) const; :ref:`engine` :ref:`get_engine`() const; const char* :ref:`impl_info_str`() const; :ref:`memory::dim` :ref:`query_s64`(:ref:`query` what) const; :ref:`memory::dims` :ref:`get_strides`() const; :ref:`memory::dims` :ref:`get_dilations`() const; :ref:`memory::dims` :ref:`get_padding_l`() const; :ref:`memory::dims` :ref:`get_padding_r`() const; float :ref:`get_epsilon`() const; template T :ref:`get_flags`() const; :ref:`dnnl::algorithm` :ref:`get_algorithm`() const; float :ref:`get_alpha`() const; float :ref:`get_beta`() const; int :ref:`get_axis`() const; :ref:`memory::dim` :ref:`get_local_size`() const; float :ref:`get_k`() const; float :ref:`get_p`() const; std::vector :ref:`get_factors`() const; :ref:`dnnl::algorithm` :ref:`get_cell_kind`() const; :ref:`dnnl::rnn_direction` :ref:`get_direction`() const; :ref:`dnnl::algorithm` :ref:`get_activation_kind`() const; :ref:`memory::dims` :ref:`get_kernel`() const; :ref:`memory::dim` :ref:`get_group_size`() const; :ref:`dnnl::prop_kind` :ref:`get_prop_kind`() const; :ref:`memory::desc` :ref:`query_md`(:ref:`query` what, int idx = 0) const; :ref:`memory::desc` :ref:`src_desc`(int idx) const; :ref:`memory::desc` :ref:`dst_desc`(int idx) const; :ref:`memory::desc` :ref:`weights_desc`(int idx) const; :ref:`memory::desc` :ref:`diff_src_desc`(int idx) const; :ref:`memory::desc` :ref:`diff_dst_desc`(int idx) const; :ref:`memory::desc` :ref:`diff_weights_desc`(int idx) const; :ref:`memory::desc` :ref:`src_desc`() const; :ref:`memory::desc` :ref:`dst_desc`() const; :ref:`memory::desc` :ref:`weights_desc`() const; :ref:`memory::desc` :ref:`diff_src_desc`() const; :ref:`memory::desc` :ref:`diff_dst_desc`() const; :ref:`memory::desc` :ref:`diff_weights_desc`() const; :ref:`memory::desc` :ref:`workspace_desc`() const; :ref:`memory::desc` :ref:`scratchpad_desc`() const; :ref:`engine` :ref:`scratchpad_engine`() const; :ref:`primitive_attr` :ref:`get_primitive_attr`() const; :ref:`dnnl::primitive::kind` :ref:`get_kind`() const; std::vector :ref:`get_cache_blob_id`() const; bool :ref:`next_impl`(); :ref:`primitive_desc_base`(); :ref:`primitive_desc_base`(); :ref:`primitive_desc_base`(); :ref:`primitive_desc_base`(); :ref:`memory::desc` :ref:`src_layer_desc`() const; :ref:`memory::desc` :ref:`augru_attention_desc`() const; :ref:`memory::desc` :ref:`src_iter_desc`() const; :ref:`memory::desc` :ref:`src_iter_c_desc`() const; :ref:`memory::desc` :ref:`weights_layer_desc`() const; :ref:`memory::desc` :ref:`weights_iter_desc`() const; :ref:`memory::desc` :ref:`weights_peephole_desc`() const; :ref:`memory::desc` :ref:`weights_projection_desc`() const; :ref:`memory::desc` :ref:`bias_desc`() const; :ref:`memory::desc` :ref:`dst_layer_desc`() const; :ref:`memory::desc` :ref:`dst_iter_desc`() const; :ref:`memory::desc` :ref:`dst_iter_c_desc`() const; :ref:`memory::desc` :ref:`diff_src_layer_desc`() const; :ref:`memory::desc` :ref:`diff_augru_attention_desc`() const; :ref:`memory::desc` :ref:`diff_src_iter_desc`() const; :ref:`memory::desc` :ref:`diff_src_iter_c_desc`() const; :ref:`memory::desc` :ref:`diff_weights_layer_desc`() const; :ref:`memory::desc` :ref:`diff_weights_iter_desc`() const; :ref:`memory::desc` :ref:`diff_weights_peephole_desc`() const; :ref:`memory::desc` :ref:`diff_weights_projection_desc`() const; :ref:`memory::desc` :ref:`diff_bias_desc`() const; :ref:`memory::desc` :ref:`diff_dst_layer_desc`() const; :ref:`memory::desc` :ref:`diff_dst_iter_desc`() const; :ref:`memory::desc` :ref:`diff_dst_iter_c_desc`() const; :ref:`primitive_desc`(); .. _details-structdnnl_1_1lstm__forward_1_1primitive__desc: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Primitive descriptor for an LSTM forward propagation primitive. Construction ------------ .. index:: pair: function; primitive_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a5148ad45607a698afb1093c5ede64a91: .. ref-code-block:: cpp :class: doxyrest-title-code-block primitive_desc() Default constructor. Produces an empty object. .. index:: pair: function; primitive_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a02ad93f559be042b626a9c6f5debff4c: .. ref-code-block:: cpp :class: doxyrest-title-code-block primitive_desc( const :ref:`engine`& aengine, :ref:`prop_kind` aprop_kind, :ref:`rnn_direction` direction, const :ref:`memory::desc`& src_layer_desc, const :ref:`memory::desc`& src_iter_desc, const :ref:`memory::desc`& src_iter_c_desc, const :ref:`memory::desc`& weights_layer_desc, const :ref:`memory::desc`& weights_iter_desc, const :ref:`memory::desc`& weights_peephole_desc, const :ref:`memory::desc`& weights_projection_desc, const :ref:`memory::desc`& bias_desc, const :ref:`memory::desc`& dst_layer_desc, const :ref:`memory::desc`& dst_iter_desc, const :ref:`memory::desc`& dst_iter_c_desc, const :ref:`primitive_attr`& attr = :ref:`default_attr`(), bool allow_empty = false ) Constructs a primitive descriptor for an LSTM (with or without peephole and with or without projection) forward propagation primitive. The following arguments may point to a zero memory descriptor: * ``src_iter_desc`` together with ``src_iter_c_desc``, * ``weights_peephole_desc``, * ``bias_desc``, * ``dst_iter_desc`` together with ``dst_iter_c_desc``. This would then indicate that the LSTM forward propagation primitive should not use them and should default to zero values instead. The ``weights_projection_desc`` may point to a zero memory descriptor. This would then indicate that the LSTM doesn't have recurrent projection layer. .. note:: All memory descriptors can be initialized with an :ref:`dnnl::memory::format_tag::any ` value of ``format_tag``. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - aengine - Engine to use. * - aprop_kind - Propagation kind. Possible values are :ref:`dnnl::prop_kind::forward_training `, and :ref:`dnnl::prop_kind::forward_inference `. * - direction - RNN direction. See :ref:`dnnl::rnn_direction ` for more info. * - src_layer_desc - Memory descriptor for the input vector. * - src_iter_desc - Memory descriptor for the input recurrent hidden state vector. * - src_iter_c_desc - Memory descriptor for the input recurrent cell state vector. * - weights_layer_desc - Memory descriptor for the weights applied to the layer input. * - weights_iter_desc - Memory descriptor for the weights applied to the recurrent input. * - weights_peephole_desc - Memory descriptor for the weights applied to the cell states (according to the Peephole LSTM formula). * - weights_projection_desc - Memory descriptor for the weights applied to the hidden states to get the recurrent projection (according to the Projection LSTM formula). * - bias_desc - Bias memory descriptor. * - dst_layer_desc - Memory descriptor for the output vector. * - dst_iter_desc - Memory descriptor for the output recurrent hidden state vector. * - dst_iter_c_desc - Memory descriptor for the output recurrent cell state vector. * - attr - Primitive attributes to use. Attributes are optional and default to empty attributes. * - allow_empty - A flag signifying whether construction is allowed to fail without throwing an exception. In this case an empty object will be produced. This flag is optional and defaults to false. .. index:: pair: function; primitive_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1abb9c0fe6c512c0fcbd5ff2ee5bf242b8: .. ref-code-block:: cpp :class: doxyrest-title-code-block primitive_desc( const :ref:`engine`& aengine, :ref:`prop_kind` aprop_kind, :ref:`rnn_direction` direction, const :ref:`memory::desc`& src_layer_desc, const :ref:`memory::desc`& src_iter_desc, const :ref:`memory::desc`& src_iter_c_desc, const :ref:`memory::desc`& weights_layer_desc, const :ref:`memory::desc`& weights_iter_desc, const :ref:`memory::desc`& weights_peephole_desc, const :ref:`memory::desc`& bias_desc, const :ref:`memory::desc`& dst_layer_desc, const :ref:`memory::desc`& dst_iter_desc, const :ref:`memory::desc`& dst_iter_c_desc, const :ref:`primitive_attr`& attr = :ref:`default_attr`(), bool allow_empty = false ) Constructs a primitive descriptor for an LSTM (with or without peephole) forward propagation primitive. The following arguments may point to a zero memory descriptor: * ``src_iter_desc`` together with ``src_iter_c_desc``, * ``weights_peephole_desc``, * ``bias_desc``, * ``dst_iter_desc`` together with ``dst_iter_c_desc``. This would then indicate that the LSTM forward propagation primitive should not use them and should default to zero values instead. .. note:: All memory descriptors can be initialized with an :ref:`dnnl::memory::format_tag::any ` value of ``format_tag``. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - aengine - Engine to use. * - aprop_kind - Propagation kind. Possible values are :ref:`dnnl::prop_kind::forward_training `, and :ref:`dnnl::prop_kind::forward_inference `. * - direction - RNN direction. See :ref:`dnnl::rnn_direction ` for more info. * - src_layer_desc - Memory descriptor for the input vector. * - src_iter_desc - Memory descriptor for the input recurrent hidden state vector. * - src_iter_c_desc - Memory descriptor for the input recurrent cell state vector. * - weights_layer_desc - Memory descriptor for the weights applied to the layer input. * - weights_iter_desc - Memory descriptor for the weights applied to the recurrent input. * - weights_peephole_desc - Memory descriptor for the weights applied to the cell states (according to the Peephole LSTM formula). * - bias_desc - Bias memory descriptor. * - dst_layer_desc - Memory descriptor for the output vector. * - dst_iter_desc - Memory descriptor for the output recurrent hidden state vector. * - dst_iter_c_desc - Memory descriptor for the output recurrent cell state vector. * - attr - Primitive attributes to use. Attributes are optional and default to empty attributes. * - allow_empty - A flag signifying whether construction is allowed to fail without throwing an exception. In this case an empty object will be produced. This flag is optional and defaults to false. .. index:: pair: function; primitive_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1ab78fb05f05f7ef6cc4147580550a66c6: .. ref-code-block:: cpp :class: doxyrest-title-code-block primitive_desc( const :ref:`engine`& aengine, :ref:`prop_kind` aprop_kind, :ref:`rnn_direction` direction, const :ref:`memory::desc`& src_layer_desc, const :ref:`memory::desc`& src_iter_desc, const :ref:`memory::desc`& src_iter_c_desc, const :ref:`memory::desc`& weights_layer_desc, const :ref:`memory::desc`& weights_iter_desc, const :ref:`memory::desc`& bias_desc, const :ref:`memory::desc`& dst_layer_desc, const :ref:`memory::desc`& dst_iter_desc, const :ref:`memory::desc`& dst_iter_c_desc, const :ref:`primitive_attr`& attr = :ref:`default_attr`(), bool allow_empty = false ) Constructs a primitive descriptor for an LSTM forward propagation primitive. The following arguments may point to a zero memory descriptor: * ``src_iter_desc`` together with ``src_iter_c_desc``, * ``bias_desc``, * ``dst_iter_desc`` together with ``dst_iter_c_desc``. This would then indicate that the LSTM forward propagation primitive should not use them and should default to zero values instead. .. note:: All memory descriptors can be initialized with an :ref:`dnnl::memory::format_tag::any ` value of ``format_tag``. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - aengine - Engine to use. * - aprop_kind - Propagation kind. Possible values are :ref:`dnnl::prop_kind::forward_training `, and :ref:`dnnl::prop_kind::forward_inference `. * - direction - RNN direction. See :ref:`dnnl::rnn_direction ` for more info. * - src_layer_desc - Memory descriptor for the input vector. * - src_iter_desc - Memory descriptor for the input recurrent hidden state vector. * - src_iter_c_desc - Memory descriptor for the input recurrent cell state vector. * - weights_layer_desc - Memory descriptor for the weights applied to the layer input. * - weights_iter_desc - Memory descriptor for the weights applied to the recurrent input. * - bias_desc - Bias memory descriptor. * - dst_layer_desc - Memory descriptor for the output vector. * - dst_iter_desc - Memory descriptor for the output recurrent hidden state vector. * - dst_iter_c_desc - Memory descriptor for the output recurrent cell state vector. * - attr - Primitive attributes to use. Attributes are optional and default to empty attributes. * - allow_empty - A flag signifying whether construction is allowed to fail without throwing an exception. In this case an empty object will be produced. This flag is optional and defaults to false. .. index:: pair: function; primitive_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a78ca609eb815bf0c6e847c5fb72dd79f: .. ref-code-block:: cpp :class: doxyrest-title-code-block primitive_desc(:ref:`dnnl_primitive_desc_t` pd) Constructs a primitive descriptor for an LSTM forward propagation primitive from a C API primitive descriptor that must have a matching kind. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - pd - C API primitive descriptor for an LSTM forward propagation primitive. Methods ------- .. index:: pair: function; src_layer_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1afd262a03436e463c97bb5dbe4b54a89d: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` src_layer_desc() const Returns source layer memory descriptor. .. rubric:: Returns: Source layer memory descriptor. .. index:: pair: function; src_iter_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1af48ac5235429822d462bb96437f2ecdc: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` src_iter_desc() const Returns source iteration memory descriptor. .. rubric:: Returns: Source iteration memory descriptor. A zero memory descriptor if the primitive does not have a source iteration parameter. .. index:: pair: function; src_iter_c_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1ac863a772baf671e7fc776a2312f58416: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` src_iter_c_desc() const Returns source iteration memory descriptor. .. rubric:: Returns: Source iteration memory descriptor. A zero memory descriptor if the primitive does not have a source iteration parameter. .. index:: pair: function; weights_layer_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a832e7468c8062760a262a82fdf7b8976: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` weights_layer_desc() const Returns weights layer memory descriptor. .. rubric:: Returns: Weights layer memory descriptor. .. index:: pair: function; weights_iter_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a3b3aa227de71f38560588b535b19cee7: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` weights_iter_desc() const Returns weights iteration memory descriptor. .. rubric:: Returns: Weights iteration memory descriptor. .. index:: pair: function; weights_peephole_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a0d544dada542045c71e8af2067bce8d9: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` weights_peephole_desc() const Returns weights peephole memory descriptor. .. rubric:: Returns: Weights peephole memory descriptor. .. index:: pair: function; weights_projection_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1ac071eb73bdc29b884166e9dd0b2d4b17: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` weights_projection_desc() const Returns weights projection memory descriptor. .. rubric:: Returns: Weights projection memory descriptor. .. index:: pair: function; bias_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1af9c2058bcb514ff8ac065e5c631450de: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` bias_desc() const Returns bias memory descriptor. .. rubric:: Returns: Bias memory descriptor. A zero memory descriptor if the primitive does not have a bias parameter. .. index:: pair: function; dst_layer_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a47da32a15db013f1d5859a55522aa2f5: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` dst_layer_desc() const Returns destination layer memory descriptor. .. rubric:: Returns: Destination layer memory descriptor. .. index:: pair: function; dst_iter_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a080c46ade77a802333e1fd4bbce56e69: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` dst_iter_desc() const Returns destination iteration memory descriptor. .. rubric:: Returns: Destination iteration memory descriptor. A zero memory descriptor if the primitive does not have a destination iteration parameter. .. index:: pair: function; dst_iter_c_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a790534f833ee4215df25bfd5f17cec22: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` dst_iter_c_desc() const Returns source iteration memory descriptor. .. rubric:: Returns: Source iteration memory descriptor. A zero memory descriptor if the primitive does not have a source iteration parameter. .. index:: pair: function; workspace_desc .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a56222845e809457d73180adf8494959a: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`memory::desc` workspace_desc() const Returns the workspace memory descriptor. .. rubric:: Returns: Workspace memory descriptor. A zero memory descriptor if the primitive does not require workspace parameter. .. index:: pair: function; get_cell_kind .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a04fcbf99c2d544582a2101778cbb1bb0: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`algorithm` get_cell_kind() const Returns an RNN cell kind parameter. .. rubric:: Returns: An RNN cell kind parameter. :ref:`dnnl::algorithm::undef ` if the primitive does not have an RNN cell kind parameter. .. index:: pair: function; get_prop_kind .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1ad6b162ba8372b94d636683e6bc01ff16: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`prop_kind` get_prop_kind() const Returns a propagation kind. .. rubric:: Returns: A propagation kind. :ref:`dnnl::prop_kind::undef ` if the primitive does not have a propagation parameter. .. index:: pair: function; get_direction .. _doxid-structdnnl_1_1lstm__forward_1_1primitive__desc_1a185ce6845c714b0bec7690012f28df73: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`rnn_direction` get_direction() const Returns an RNN direction parameter. .. rubric:: Returns: An RNN direction parameter. :ref:`dnnl::rnn_direction::undef ` if the primitive does not have an RNN direction parameter.