LudovicoYIN opened a new pull request, #19601:
URL: https://github.com/apache/tvm/pull/19601

   ## Summary
   
   This PR adds Relax TFLite frontend support for `UNIDIRECTIONAL_SEQUENCE_RNN` 
(BuiltinOperator 35), claimed in 
[#19519](https://github.com/apache/tvm/issues/19519) Group A.
   
   The op executes a simple RNN cell over a time sequence. The converter 
unrolls the time steps at graph-construction time using Relax primitives.
   
   Cell equation:
   ```
   h_t = fused_activation(x_t @ W.T + h_{t-1} @ Wr.T + b)
   ```
   
   ## Changes
   
   - **Handler**: `convert_unidirectional_sequence_rnn` registered in 
`convert_map` (alphabetical, U-region after `UNPACK`)
   - **Inputs** (5): `input [batch, time, input_size]`, `input_weights 
[num_units, input_size]`, `recurrent_weights [num_units, num_units]`, `bias 
[num_units]`, `hidden_state [batch, num_units]` (variable, zero-initialised)
   - **Output**: `[batch, time, num_units]` (always batch-major)
   - **time_major=True**: input is transposed to batch-major before unrolling
   - **Activations**: NONE, RELU, RELU6, TANH, SIGMOID (via 
`convert_fused_activation_function`)
   - **Quantized**: raises `OpNotImplemented` (not yet supported)
   
   ## Testing
   
   Modern TF/Keras (2.x, Keras 3) no longer emits 
`UNIDIRECTIONAL_SEQUENCE_RNN`; `SimpleRNN` with `unroll=False` lowers to 
`WHILE`+TensorList ops, and `unroll=True` expands to elementwise ops. Tests 
therefore follow the same flatbuffer-construction pattern used by the StableHLO 
op PRs (#19536, #19587).
   
   Three tests added to `tests/python/relax/test_frontend_tflite.py`:
   
   - `test_unidirectional_sequence_rnn_none_activation` — 
`tvm.ir.assert_structural_equal` with identity weights / zero bias, NONE 
activation, time=1
   - `test_unidirectional_sequence_rnn_relu_activation` — shape check, random 
weights, RELU activation, time=3
   - `test_unidirectional_sequence_rnn_time_major` — shape check, 
`time_major=True` input layout
   
   ```bash
   python -m pytest tests/python/relax/test_frontend_tflite.py -k 
unidirectional_sequence_rnn -v
   ```
   
   All 3 tests pass. pre-commit (ASF header, ruff check, ruff format) all pass.
   
   ## References
   
   - Issue [#19519](https://github.com/apache/tvm/issues/19519) Group A: 
Sequence / recurrent model operators


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to