+
    G-jý  ã                   óZ   € ^ RI t ^ RIt^ RIHt ^RIHtHtHt ^RIH	t	   ! R R]	4      t
R# )é    N)Úonnx_pb)Ú	QuantTypeÚattribute_to_kwargÚ	ms_domain)ÚQuantOperatorBasec                   ó>   a a€ ] tR t^t oV 3R ltV 3R ltRtVtV ;t# )Ú	LSTMQuantc                ó&   <€ \         SV `  W4       R # )N)ÚsuperÚ__init__)ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s   &&&€Úx/Volumes/fast/ai/experiments/nudenet-smoke/.venv/lib/python3.14/site-packages/onnxruntime/quantization/operators/lstm.pyr   ÚLSTMQuant.__init__   s   ø€ Ü‰Ñ˜Ö3ó    c                óª  <€ V P                   pVP                  R8X  g   Q hV P                  P                  VP                  ^,          4      '       d3   V P                  P                  VP                  ^,          4      '       g   \
        SV `  4        R# V P                  P                  pVP                  VP                  ^,          4      pVP                  VP                  ^,          4      p\        VP                  4      ^8w  g   \        VP                  4      ^8w  d   \
        SV `  4        R# VP                  w  rVpVP                  w  r‰p
V P                  P                  4       '       dE   VP                  ^  VP                  ^  WV,          VP                  ^ &   W‰,          VP                  ^ &   V P                  P                  VP                  ^,          \        P                  P                  ^ 4      pV P                  P                  VP                  ^,          \        P                  P                  ^ 4      pVP                  V^ ,          4      pVP                  V^ ,          4      p\         P"                  P%                  V4      p\         P"                  P%                  V4      p\&        P(                  ! WõWg34      p\&        P(                  ! VW‰V
34      p\&        P*                  ! VR	4      p\&        P*                  ! VR	4      p\         P"                  P-                  Wû^ ,          4      p\         P"                  P-                  VV^ ,          4      pVP/                  WÞ.4       VP1                  V4       VP1                  V4       VP                  V^,          4      pVP                  V^,          4      pVP                  V^,          4      pVP                  V^,          4      pV P                  P                  4       '       dA   WV.VP                  R&   W‰.VP                  R&   WV.VP                  R&   W‰.VP                  R&   . p\        VP                  4      pVP3                  VP                  ^ ,          .4       VP3                  V^ ,          V^ ,          .4       TP3                  V^8”  d   VP                  ^,          MR.4       TP3                  V^8”  d   VP                  ^,          MR.4       TP3                  V^8”  d   VP                  ^,          MR.4       TP3                  V^8”  d   VP                  ^,          MR.4       TP3                  V^8”  d   VP                  ^,          MR.4       VP3                  V^,          V^,          V^,          V^,          .4       / pVP4                   F0  pVP6                  R8X  d   K  VP9                  \;        V4      4       K2  	  \<        VR&   VP6                  '       g   RMVP6                  R,           p\         P>                  P@                  ! RVVPB                  V3/ VB pV P                  PD                  PG                  V4       V P                  PI                  VP                  ^ ,          4      pVe(   V P                  PD                  PG                  V4       R# R# )
zÄ
parameter node: LSTM node.
parameter new_nodes_list: List of new nodes created before processing this node.
return: a list of nodes in topological order that represents quantized Attention node.
ÚLSTMN:NNNÚ ÚlayoutÚdomainÚ_quantÚDynamicQuantizeLSTM)r   é   é   )%ÚnodeÚop_typeÚ	quantizerÚis_valid_quantize_weightÚinputr   ÚquantizeÚmodelÚget_initializerÚlenÚdimsÚis_per_channelÚquantize_weight_per_channelÚ
onnx_protoÚTensorProtoÚINT8ÚonnxÚnumpy_helperÚto_arrayÚnumpyÚreshapeÚ	transposeÚ
from_arrayÚremove_initializersÚadd_initializerÚextendÚ	attributeÚnameÚupdater   r   ÚhelperÚ	make_nodeÚoutputÚ	new_nodesÚappendÚ_dequantize_value)r   r   r#   ÚWÚRÚ	W_num_dirÚW_4_hidden_sizeÚW_input_sizeÚ	R_num_dirÚR_4_hidden_sizeÚR_hidden_sizeÚquant_input_weight_tupleÚquant_recurrent_weight_tupleÚW_quant_weightÚR_quant_weightÚW_quant_arrayÚR_quant_arrayÚW_quant_tranposedÚR_quant_tranposedÚ
W_quant_zpÚ
R_quant_zpÚW_quant_scaleÚR_quant_scaleÚinputsÚ	input_lenÚkwargsr6   Úquant_lstm_nameÚquant_lstm_nodeÚdequantize_noder   s   &                             €r   r"   ÚLSTMQuant.quantize   sR  ø€ ð �y‰yˆØ�|‰|˜vÔ%Ð%Ð%à�~‰~×6Ñ6°t·z±zÀ!µ}×EÒEÈTÏ^É^×MtÑMtØ�J‰J�q�M÷N
ò N
ô ‰GÑÔÙà—‘×$Ñ$ˆØ×!Ñ! $§*¡*¨Q¥-Ó0ˆØ×!Ñ! $§*¡*¨Q¥-Ó0ˆäˆq�v‰v‹;˜!Ôœs 1§6¡6›{¨aÔ/Ü‰GÑÔÙà56·V±VÑ2ˆ \Ø67·f±fÑ3ˆ ]à�>‰>×(Ñ(×*Ò*Ø—‘�q�	Ø—‘�q�	Ø!Õ3ˆA�F‰F�1‰IØ!Õ3ˆA�F‰F�1‰Ià#'§>¡>×#MÑ#MØ�J‰J�q�MÜ×"Ñ"×'Ñ'Øó$
Ð ð
 (,§~¡~×'QÑ'QØ�J‰J�q�MÜ×"Ñ"×'Ñ'Øó(
Ð$ð ×.Ñ.Ð/GÈÕ/JÓKˆØ×.Ñ.Ð/KÈAÕ/NÓOˆä×)Ñ)×2Ñ2°>ÓBˆÜ×)Ñ)×2Ñ2°>ÓBˆäŸš mÀÐ5_Ó`ˆÜŸš m°iÐR_Ð5`ÓaˆäŸš¨°yÓAˆÜŸš¨°yÓAˆä ×-Ñ-×8Ñ8¸ÐabÕHcÓdÐÜ ×-Ñ-×8Ñ8¸ÐHdÐefÕHgÓhÐà×!Ñ! >Ð"BÔCØ×ÑÐ/Ô0Ø×ÑÐ/Ô0à×*Ñ*Ð+CÀAÕ+FÓGˆ
Ø×*Ñ*Ð+GÈÕ+JÓKˆ
Ø×-Ñ-Ð.FÀqÕ.IÓJˆØ×-Ñ-Ð.JÈ1Õ.MÓNˆà�>‰>×(Ñ(×*Ò*Ø"+Ð!=ˆJ�O‰O˜AÑØ"+Ð!=ˆJ�O‰O˜AÑØ%.Ð$@ˆM×Ñ˜qÑ!Ø%.Ð$@ˆM×Ñ˜qÑ!àˆÜ˜Ÿ
™
“Oˆ	Ø�‰�t—z‘z !•}�oÔ&Ø�‰Ð/°Õ2Ð4PÐQRÕ4SÐTÔUØ�‰¨	°A¬�t—z‘z !–}¸2Ð>Ô?Ø�‰¨	°A¬�t—z‘z !–}¸2Ð>Ô?Ø�‰¨	°A¬�t—z‘z !–}¸2Ð>Ô?Ø�‰¨	°A¬�t—z‘z !–}¸2Ð>Ô?Ø�‰¨	°A¬�t—z‘z !–}¸2Ð>Ô?Ø�‰à(¨Õ+Ø(¨Õ+Ø,¨QÕ/Ø,¨QÕ/ð	ô	
ð ˆØŸœˆIØ�~‰~ Ô)ÙØ�M‰MÔ,¨YÓ7Ö8ñ (ô %ˆˆxÑà$(§I§I I™"°4·9±9¸xÕ3GˆÜŸ+™+×/Ò/Ð0EÀvÈtÏ{É{Ð\kÑvÐouÑvˆØ�‰× Ñ ×'Ñ'¨Ô8àŸ.™.×:Ñ:¸4¿:¹:Àa½=ÓIˆØÒ&Ø�N‰N×$Ñ$×+Ñ+¨OÖ<ñ 'r   © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r"   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r	   r	      s   ù‡ € õ4÷h=õ h=r   r	   )r/   r,   r   r)   Úquant_utilsr   r   r   Úbase_operatorr   r	   rZ   r   r   Ú<module>re      s+   ðÛ Û Ý &ç BÑ BÝ ,ðô
l=Ð!ö l=r   