
    iju                         d dl Z d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d	 Zd
 Zd Z	 	 	 	 	 	 	 	 ddZd Zd Zd Zd Z	 	 	 ddZ	 	 	 	 ddZd Zd Zd Zy)    N)Model)Type)tree)OPENVINO_DTYPES)OpenVINOKerasTensor)convert_to_numpy)get_ov_outputc                     	 t        t        |             S # t        t        t        f$ r }t        j                  d|       Y d}~yd}~ww xY w)zTry to evaluate ov_output as a numpy array (no upstream Parameters).

    Returns the numpy array on success, or None if the subgraph contains
    Parameter nodes (i.e. depends on runtime input) or evaluation fails.
    z3_try_eval_constant: could not evaluate subgraph: %sN)r   r   RuntimeError
ValueError	TypeErrorloggingdebug)	ov_outputes     s/var/www/html/emotional.easysim.app/public_html/venv/lib/python3.12/site-packages/keras/src/backend/openvino/rnn.py_try_eval_constantr      sA     3I >??*i0 KQOs    A
AA
c                     |dk(  rt        j                  |       } nt        j                  | |      } t        j                  | t        |         j                  d      S )z0Create an OV Constant output from a numpy array.bfloat16dtyper   )npascontiguousarrayov_opsetconstantr   output)np_arrayr   s     r   	_ov_constr      sO    
''1''>X_U-CDKKANN    c                     t        |      }t        j                  | ||      }t        |      D ci c]  \  }}|||    }}}t        j                  |D cg c]  }||   	 c}|      S c c}}w c c}w )z2Reorder gate chunks of a numpy array along `axis`.axis)lenr   split	enumerateconcatenate)	arr
from_orderto_orderr"   nslicesiggate_maps	            r   _reorder_npr/   %   sj    JAXXc14(F)2:)>?A6!9?H?>>918A;9EE @9s   A-A3c                 
   d }|s t        j                  ||      }| ||      }t        j                  |      }|d   }t        |      }t	        j
                  |t        j                        j                  d      }t	        j                  |t	        j                  dgt        j                        j                  d      t	        j                  dt        j                        j                  d            j                  d      t	        j                  t	        j                  dgt        j                        j                  d            j                  d      ||t        |      }|j                         j                  j                         dk(  rt	        j                  t	        j                  dt        j                        j                  d      t	        j                  dt        j                        j                  d      t        j                        j                  d      }t	        j                   |t	        j                  dgt        j                        j                  d            j                  d      }t	        j"                  |t        j                        j                  d      }t	        j                   |t	        j                  dgt        j                        j                  d            j                  d      }t	        j$                  ||      j                  d      }t'        |      }|t        |      }|j)                         t        j*                  k7  r3t	        j"                  |t        j*                        j                  d      }|j                         }|j                  j                         }|dk(  rXt	        j                   |t	        j                  dgt        j                        j                  d            j                  d      }t'        |      }|r:fd}t        j                  ||      }| ||      }t        j                  |      }d }|j                         }|j                  j,                  r>|j                  j                         dk\  r!|d   }|j,                  r|j                         }|t/        | |||||||	|
|
      S t1        | ||||||	|
|
      S )	Nc                 @   t        t        t        | j                                    }d\  |d<   |d<   t	        j
                  |t        j                        j                  d      }t        |       }t        t	        j                  ||      j                  d            S )N)   r   r   r2   r   )listranger#   shaper   r   r   i32r   r	   r   	transpose)input_taxes
perm_constinput_ovs       r   swap_batch_timestepz rnn.<locals>.swap_batch_timestep:   s    E#gmm,-.Qa&&t488<CCAF
 )"x4;;A>
 	
r   r   r   r2   output_type   c           	         t        |       }t        j                  dgt        j                        j                  d      }t        j                  t        j                  t        j                  dt        j                        j                  d            j                  d      t        j                  dt        j                        j                  d      t        j                  dt        j                        j                  d      t        j                        j                  d      }t        t        j                  |||      j                  d            S )Nr   r   r2   r@   r=   )
r	   r   r   r   r6   r   r4   subtractr   gather)xx_ovstartidx
time_stepss       r   reverse_timezrnn.<locals>.reverse_timeu   s     #D%%qc:AA!DE..!! 1 1!488 D K KA N&)!!"DHH5<<Q?!!"DHH5<<Q? HH fQi  'c5188; r   )r   map_structureflattenr	   r   shape_ofr   r6   r   rC   r   squeezeget_partial_shaperank
get_lengthr4   	unsqueezeconvertlessr   get_element_typeboolean	is_static_rnn_unrolled	_rnn_loop)step_functioninputsinitial_statesgo_backwardsmask	constantsunrollinput_length
time_majorzero_output_for_maskreturn_all_outputsr<   flattened_inputsinput_0
input_0_ovinput_shapeinput_len_ovindicesinput_len_castedinput_len_expanded	mask_boolmask_ovpshaperO   rI   static_time_stepspshape_0dim0rH   s                               @r   rnnrr   -   s'   
 ##$7@&t,D||F+q!Gw'J##J9@@CK1#TXX.55a8!488,33A6 fQi	 
 !!H%%qc:AA!DfQi  |0$\2))+00;;=Bnn!!!4884;;A>!!!4884;;A> HH	
 fQi  ((**A3dhh?FFqIfQi   (//dhhGNN  "*!3!3 !!1#TXX6==a@" fQi  !g/ABII!LI&y1D%##%5&&w=DDQGG**,{{%%'19((**B4txx@GGJfQi  #7+	 ##L&9%D<</ ++-H}}8==#;#;#=#B{>> $ 1$ 
 	
  r   c
                 	  ()* |xs g }t        j                  |      }
t        j                  dt        j
                        j                  d      ))fd(|
D cg c]  }t        t        |             }}t        |      }g }d}t        |      D ]  }t        j                  |t        j
                        j                  d      *t        j                  (*fd|      } | |t        |      t        |      z         \  }}t        j                  |      s|g}|Gt         (|*            }t        j                  |      }t        j                  |      }g }t        ||      D ]Y  \  }}t        |      }t        |      }|j                  t        t        j                   |||      j                  d                   [ t        j"                  ||      }t        |      }|t        |      }nt        j$                  t        j                  d|j'                               j                  d      t        j(                  |t        j
                        j                  d            j                  d      }t        t        j                   |||      j                  d            }|rt        j$                  t        j                  d|j'                               j                  d      t        j(                  |t        j
                        j                  d            j                  d      }t        t        j                   |||      j                  d            }n|}nt        |      }|}|}|r|j                  |       |g} |D  cg c]  } t        j                  |        }!} t+        |!d         }"g }#t        j                  dgt        j
                        j                  d      }$t        |"      D ]  }%t        t+        |            D cg c]6  }t        j,                  t        |!|   |%         |$      j                  d      8 }&}|#j                  t        t        j.                  |&d      j                  d                    t        j"                  |d   |#      }'|st        j                  |	|'      }'||'t        |      fS c c}w c c} w c c}w )zUnrolled RNN: iterate time steps in Python, producing a flat OV graph
    with no Loop op. Required when the cell contains ops (e.g. Convolution)
    that the OV CPU TensorIterator plugin cannot execute inside a loop body.
    r   r   c                 x    t        |       }t        t        j                  ||      j	                  d            S )Nr   )r	   r   r   rC   r   )rD   t_constrE   axis_0s      r   	_slice_atz _rnn_unrolled.<locals>._slice_at   s5    Q"OOD'6299!<
 	
r   Nc                      |       S N )rD   rw   ru   s    r   <lambda>z_rnn_unrolled.<locals>.<lambda>   s    Yq'-B r   r!   )r   rK   r   r   r   r6   r   r   r	   r3   r4   rJ   tuple	is_nestedzipappendselectpack_sequence_as	broadcastrT   rL   r#   rQ   concat)+rY   rZ   r[   r]   r^   num_time_stepsra   rb   rc   r<   flattened_constantscconstants_ovstatessuccessive_outputslast_outputtinp_toutput_t
new_states	mask_t_ovflat_newflat_oldmasked_statesnsosns_ovos_ovout_ovprev_ovzeroseq_outoflat_outputsn_outsstackedunsq_axr,   partsoutputsrw   rv   ru   s+                                           @@@r   rW   rW      sO     RI,,y1q188;F
 8K23M!,-L  .!FK>" 7+##ATXX6==a@""#BFK,5=5#66 
* ~~j)$J%ig&>?I||J/H||F+HMh1 B%b)%b)$$' 	5%@GGJ **:}EF"8,F&'4",,%%a)@)@)BCJJ1M%%fdhh7>>qA &) 
 .	67;BB1EK $))%%a)@)@)BCJJ1M%%fdhh7>>qA &)  .OOIvt<CCAF &*%F"KG%%g.")o7+t .@@DLLO@L@a!FG4884;;A>G6] 	

 3123	
  l1oa017fQi
 
 	A > E Ea HI	
	
 ##$6q$97CG$$%8'Bf--kD A

s   SS;S#c
                    t        j                  |      }
t        j                  |      }|rt        j                  |      ng }d }t        j                  ||      } | |t        |      t        |xs g       z         \  }}t        j                  |      }g }|D ]  }t	        |      }t        j                  |t        j                        j                  d      }|j                         }t        j                  t        j                  d|      j                  d      |      j                  d      }|j                  t        |              g }g }|
D ]  }t	        |      }|j                         }|j                   j"                  rdgt%        |      dd z   }nd}t        j&                  ||j                               }|j                  |       |j                  |        g }|t	        |      } | j                         }|j                   j"                  rdgt%        |      dd z   nd}t        j&                  || j                               }|j                  |       |j                  |       g }!|D ]a  }"t	        |"      }#t        j&                  |#j                         |#j                               }|!j                  |       |j                  |       c g }$|D ]a  }%t	        |%      }&t        j&                  |&j                         |&j                               }|$j                  |       |j                  |       c g }'|D ]a  }(t	        |(      })t        j&                  |)j                         |)j                               }|'j                  |       |j                  |       c |D *cg c]r  }*t        t        j(                  |*j                  d      t        j                  dgt        j                        j                  d            j                  d            t }+}*|!D *cg c]  }*t        |*j                  d             },}*|'D *cg c]  }*t        |*j                  d             }-}*t        j*                  ||+      }.t        j*                  ||,      }/ | |.t        |/      t        |-      z         \  }0}1t        j                  |0      }2t        j                  |1      }3g }4g }5g }6|t        j(                  |d   j                  d      t        j                  dgt        j                        j                  d            j                  d      }7t-        t/        |3|,            D ]U  \  }8\  }9}:t	        |9      };t	        |:      }<t        j0                  |7|;|<      j                  d      }=|5j                  |=       W t-        t/        |2|$            D ]  \  }8\  }>}?t	        |>      }@|?j                  d      }At        j0                  |7|@|A      j                  d      }B|6j                  |B       |rt        j                  t        j                  d@j                               j                  d      t        j                  |@t        j                        j                  d            j                  d      }Ct        j0                  |7|@|C      j                  d      }DnB}D|4j                  D       " nH|3D Ecg c]  }Et	        |E       }5}E|2D Ecg c]  }Et	        |E       }4}E|2D Ecg c]  }Et	        |E       }6}Et        j                  dgt        j                        j                  d      }F|4D Ecg c]'  }Et        j2                  |EF      j                  d      ) }4}Et        j                  dt        j4                        j                  d      }G|Gg|5z   |6z   |4z   }Ht7        |H|      }It        j                  dt        j4                        j                  d      }Jt        j8                  ||J      }K|Kj;                  |I       |Kj=                  ddg       t/        ||
      D ]%  \  }}Kj?                  |t	        |      ddddd       ' |%t	        |      } Kj?                  |d   | ddddd       d}Lt/        |!|      D ])  \  }}MKjA                  |t	        |M      HL          |Ldz  }L+ g }Nt/        |$|      D ]=  \  }}MKjA                  |t	        |M      HL          Nj                  |H|L          |Ldz  }L? t/        |'|      D ]   \  }}OKjC                  |t	        |O             " g }P|4D ]:  }KjE                  HL   ddddd      }Pj                  t        |             |Ldz  }L< g }Qd}R|D ]6  }KjG                  HR   d      }Qj                  t        |             |Rdz  }R8 R}Sg }T|D ]6  }KjG                  HS   d      }Tj                  t        |             |Sdz  }S8 t        j*                  |P      }Ut        j*                  |Q      }Vt        j*                  |T      }W|st        j                  |	U      }UWUVfS c c}*w c c}*w c c}*w c c}Ew c c}Ew c c}Ew c c}Ew )z~Loop-based RNN using OV's Loop op (TensorIterator).
    Used as fallback when the time dimension is not statically known.
    c                 B   t        |       }t        j                  |t        j                  dt        j
                        j                  d      t        j                  dt        j
                        j                  d            j                  d      }t        |      S )Nr   r   )r	   r   rC   r   r   r6   r   r   )rD   rE   slice_0s      r   _slice_at_0z_rnn_loop.<locals>._slice_at_07  sv    Q//atxx077:atxx077:
 &)	 	
 #7++r   r   r2   Nr   Tr@   )$r   rK   rJ   r|   r	   r   rL   r   r6   r   rT   r   r   r   r   rN   rO   rV   r3   	parameterrM   r   r%   r~   r   rQ   rU   r   loopset_functionset_special_body_portsset_sliced_inputset_merged_inputset_invariant_inputget_concatenated_slicesget_iter_value)XrY   rZ   r[   r]   r^   rH   ra   rb   rc   r<   rd   flattened_statesr   r   inputs_0output_0_flattened_output_0last_output_statesoutr   r5   r   zerosparamssliced_inputs_paramsinpinp_ovrn   	new_shapeparamsliced_mask_paramsrm   merged_states_paramsstst_ovlast_output_paramslolo_ovconstants_paramsr   c_ovpsliced_inputs_tmerged_states_tconstants_tpacked_inputspacked_statesstep_outputstep_new_statesflat_step_outputflat_step_new_statesfinal_output_listfinal_states_listfinal_last_output_listmask_tr,   new_stold_st	new_st_ov	old_st_ovresnew_outold_last_out
new_out_ovold_last_out_ovlast_out_resr   seq_out_resrD   r   
cond_constresults
body_modelexec_cond_inr   current_res_idxinitfinal_last_outputs_resvalloop_outputsloop_final_states
st_res_idx
lo_res_idxloop_final_last_outputsr   r   r   sX                                                                                           r   rX   rX   $  s|
    ||F+||N35>$,,y1B, !!+v6H%'%	R*@@KHa h/! >s#!!&$((3::1='')""a'..q15

&) 	 	!!"5e"<=> F 	s#))+;;  d6l12..II""9f.E.E.GH##E*e	 %**,.4kk.C.CQC$v,qr**	""9g.F.F.HI!!%(e b!""##%u'='='?
 	##E*e   b!""##%u'='='?
 	!!%(e   Q""""$d&;&;&=
 	&e &  	!!1#TXX6==a@ fQi		
O  3G-.AHHQK(O  >NN&qxx{3NKN))&/BM))./JM#0u]+eK.@@$ K ||K0<<8!!q!((+qc299!<
 &) 	 $-$o6$
 	*A &f-I%f-I//&)Y?FFqIC$$S)	* +4 "45+
 	2&A& 'w/J*11!4O#??
OfQi  #)),7#))%%a)D)D)FGNN %%j$((;BB1E	
 &)  'oofj$GNN +$$[1+	2. 8LL!]1-LL7GH!]1-HH<L!Mq-"2!M!M4884;;A>G:K561g&--a0  ""46==a@J	
	
 	! 	  w'J$$T4<<8??BL==\2Dj!Q(.0@A I
se]3%7Aq"aHI%03WaAr1MO/1AB t=&(@	
 	1	
  -/AB t=&(@	
 	%%go&>?1 *,?@ <
s  c(:;<L **O$aAr1
 	/451 J !!'*"5r:  !4S!9:a
 J  !!'*"5r:&&':3'?@a
 ##Hl;G&&~7HIJ''2IJK$$%8'B++u O^ MH!Ms+   2A7j /!j%!j*j/%j4=j9
,j>c                    t        |      }t        j                  |t        j                        j                  d      }t        j                  | ||      j                         }t        |      D ci c]  \  }}|||    }	}}|D cg c]  }|	|   	 }
}t        j                  |
|      j                  d      S c c}}w c c}w )a  Reorder gate slices of a tensor along `axis`.

    `from_order` and `to_order` are lists of single-char gate names, e.g.
    from_order=['i','f','c','o'], to_order=['f','i','c','o'].
    The tensor dimension along `axis` must be divisible by len(from_order).
    r   r   r!   )
r#   r   r   r   r6   r   r$   r   r%   r   )rE   r(   r)   r"   n_gates
axis_constchunksr,   r-   r.   	reordereds              r   _reorder_gatesr     s     *oG""4txx8??BJ^^D*g6>>@F)2:)>?A6!9?H?&./!/I/??94077:: @/s   3B>
Cc                    t        j                  | t        j                        j	                  d      }t        j
                  |t        j                  dgt        j                        j	                  d      t        j                  dt        j                        j	                  d            j	                  d      }t        j
                  |t        j                  dgt        j                        j	                  d      t        j                  dt        j                        j	                  d            j	                  d      }t        j                  ||      j	                  d      S )zEReturn int32 sequence-length tensor [batch] equal to full time steps.r   r   r2   )r   rL   r   r6   r   rC   r   r   )	inputs_ovrg   
batch_sizerH   s       r   _seq_lengthsr     s   ##Itxx8??BK1#TXX.55a8!488,33A6 fQi	 
 1#TXX.55a8!488,33A6 fQi	 
 j*5<<Q??r   c                 $   t        |dd       }t        |dd       }|dk(  r|dk(  r|s||t        t        |       }t        |      }t        |      }t        |      }t        |      }t        |      }|j                         }|j                         |k7  r%t	        j
                  ||      j                  d      }|j                         d   j                         }t        |      }t        |      }t        |      }|||t        |j                        }t        |j                  g dg dd      }t        |t        j                      |      }t        |j                  g dg dd      }t        |t        j                      |      }t        |g dg dd      }t        |t        j                      |      }nt	        j"                  |t	        j$                  ddgt&        j(                  	      j                  d            j                  d      } t+        | g dg dd      }t	        j,                  |t	        j$                  dgt&        j(                  	      j                  d            j                  d      }t	        j"                  |t	        j$                  ddgt&        j(                  	      j                  d            j                  d      }!t+        |!g dg dd      }t	        j,                  |t	        j$                  dgt&        j(                  	      j                  d            j                  d      }t+        |g dg dd      }t	        j,                  |t	        j$                  dgt&        j(                  	      j                  d            j                  d      }t	        j,                  |t	        j$                  dgt&        j(                  	      j                  d            j                  d      }"t	        j,                  |t	        j$                  dgt&        j(                  	      j                  d            j                  d      }#t/        |      }$|
rd
nd}%t	        j0                  ||"|#|$|||||%	      }&t	        j$                  dgt&        j(                  	      j                  d      }'t	        j2                  |&j                  d      |'      j                  d      }(t	        j2                  |&j                  d      |'      j                  d      })t	        j2                  |&j                  d      |'      j                  d      }*|
rt	        j4                  |(t&        j(                        j                  d      }+t	        j6                  |+t	        j$                  dt&        j(                  	      j                  d      t	        j$                  dt&        j(                  	      j                  d            j                  d      },t	        j8                  t	        j:                  |,t	        j$                  dt&        j(                  	      j                  d            j                  d      t	        j$                  dt&        j(                  	      j                  d      t	        j$                  dt&        j(                  	      j                  d      t&        j(                        j                  d      }-t	        j6                  |(|-t	        j$                  dt&        j(                  	      j                  d            j                  d      }(t=        |)      t=        |(      t=        |)      t=        |*      gfS )N__name__tanhsigmoidr   )r,   fr   r   )r   r,   r   r   r!   r2   r   reverseforwardr?   r@   r=   )getattrNotImplementedErrorr	   rT   r   rR   r   rN   rP   r   strr   r/   Tr   r   newaxisr7   r   r   r6   r   rQ   r   lstm_sequencerM   rL   rC   r4   rB   r   ).rZ   	initial_h	initial_cr]   kernelrecurrent_kernelbias
activationrecurrent_activationreturn_sequencesr\   r_   act_namerec_act_namer   initial_h_ovinitial_c_ov	kernel_ovrecurrent_kernel_ovbias_ovweight_typehidden_sizek_datar_datab_datar   k_npwr_nprb_npbktrth0c0seq_lens	directionlstm_outdir_axisall_outputsh_nc_nr5   time_lenrG   s.                                                 r   lstmr)    s    z:t4H/TBLFI%L!!f%I +L +Lf%I'(89D!G,,.K!!#{2$$Y<CCAF	%779!<GGIK	*F 34F(Ff0V5G FLL!HH*,@q
 d2::&.HH*,@q
 d2::&.(*>Q
 d2::&.q!fDHH5<<Q?
 &) 	 $&:
 x  !DHH5<<Q?

&) 	
 q!fDHH5<<Q?
 &) 	 $&:
 x  !DHH5<<Q?

&) 	
 )+?a
 x  !DHH5<<Q?

&) 	
 
		h''488<CCAF
fQi  
		h''488<CCAF
fQi  I&H)	yI%%2r8Q1k9H   !DHH5<<Q?H""8??1#5x@GGJK


8??1-x
8
?
?
BC


8??1-x
8
?
?
BC!!+txx8??B??atxx077:atxx077:
 &)	 	
 nn(++ATXX>EEaHfQib188;b188;
 &) 	 ooatxx077:
 &)	 	 	C K(	S	!#6s#;< r   c                    t        |dd       }t        |dd       }|dk(  r|dk(  r|
s||r|t        t        |       }t        |      }t        |      }t        |      }t        |      }|j                         }|j                         |k7  r%t	        j
                  ||      j                  d      }|j                         d   j                         }t        |      }t        |      }t        |      }|||t        |j                        }t        |j                  t        j                     |      }t        |j                  t        j                     |      }|d   |d   }}|j                   d   dz  }t        j"                  |d | |d | z   ||d|z   ||d|z   z   |d|z  d  |d|z  d  gd      }t        |t        j                     |      }nt	        j$                  |t	        j&                  ddgt(        j*                  	      j                  d            j                  d      }t	        j,                  |t	        j&                  dgt(        j*                  	      j                  d            j                  d      }t	        j$                  |t	        j&                  ddgt(        j*                  	      j                  d            j                  d      }t	        j,                  |t	        j&                  dgt(        j*                  	      j                  d            j                  d      }t	        j&                  dt(        j*                  	      j                  d      } t	        j.                  |t	        j&                  dt(        j*                  	      j                  d      |       j                  d      }!t	        j.                  |t	        j&                  dt(        j*                  	      j                  d      |       j                  d      }"t	        j&                  dt(        j*                  	      j                  d      }#t	        j0                  |!|#d      j3                         }$t	        j0                  |"|#d      j3                         }%t	        j4                  |$d   |%d         j                  d      }&t	        j4                  |$d   |%d         j                  d      }'|$d   }(|%d   })t	        j6                  |&|'|(|)gd      j                  d      }t	        j,                  |t	        j&                  dgt(        j*                  	      j                  d            j                  d      }t	        j,                  |t	        j&                  dgt(        j*                  	      j                  d            j                  d      }*t9        |      }+|	rd
nd},t	        j:                  ||*|+|||||,d	      }-t	        j&                  dgt(        j*                  	      j                  d      }.t	        j<                  |-j                  d      |.      j                  d      }/t	        j<                  |-j                  d      |.      j                  d      }0|	rt	        j>                  |/t(        j*                        j                  d      }1t	        j.                  |1t	        j&                  dt(        j*                  	      j                  d      t	        j&                  dt(        j*                  	      j                  d            j                  d      }2t	        j@                  t	        jB                  |2t	        j&                  dt(        j*                  	      j                  d            j                  d      t	        j&                  dt(        j*                  	      j                  d      t	        j&                  dt(        j*                  	      j                  d      t(        j*                        j                  d      }3t	        j.                  |/|3t	        j&                  dt(        j*                  	      j                  d            j                  d      }/tE        |0      tE        |/      tE        |0      gfS )Nr   r   r   r   r2      r?   r!   r   r   r   T)linear_before_resetr@   r=   )#r   r   r	   rT   r   rR   r   rN   rP   r   r   r   r   r   r   r  r5   r&   r7   r   r   r6   rQ   rC   r$   r   addr   r   gru_sequencerM   rL   r4   rB   r   )4rZ   initial_stater]   r  r  r  r  r	  r
  r\   r_   reset_afterr  r  r   initial_state_ovr  r  r  r  r  r  r  r  r   r  r  b_inb_rcr*   r  r  axb_inputb_recursplit_ax
b_in_parts
b_rc_partsb_zb_rb_hrb_hr  r!  r"  gru_outr$  r%  r&  r5   r(  rG   s4                                                       r   grur?    s    z:t4H/TBLFI%L!!f%I$]3f%I'(89D!G,,.K!!#{2$$Y<CCAF	%779!<GGIK	*F 34F(Ff0V5G FLL!fhhrzz*E2fhhrzz*E2 AYq	dJJqMQ~~Ra48#QQ$q1q5/1QUWQUW	 
 d2::&.q!fDHH5<<Q?
 &) 	
 x  !DHH5<<Q?

&) 	
 q!fDHH5<<Q?
 &) 	
 x  !DHH5<<Q?

&) 	
 q188;//X&&q9@@CR

&) 	 //X&&q9@@CR

&) 	 $$Qdhh7>>qA^^GXq9AAC
^^GXq9AAC
ll:a=*Q-8??Bll:a=*Q-8??Bm!}OOS#sD1:AA!Dx  !DHH5<<Q?

&) 	
 
		(++QCtxx@GGJ
fQi  I&H)	yI##
			 
G   !DHH5<<Q?H""7>>!#4h?FFqIK


7>>!,h
7
>
>q
AC !!+txx8??B??atxx077:atxx077:
 &)	 	
 nn(++ATXX>EEaHfQib188;b188;
 &) 	 ooatxx077:
 &)	 	 	C K(	S	!" r   c                       y)NFrz   argskwargss     r   cudnn_okrD  ;  s    r   c                      t         ry   r   rA  s     r   bidirectional_lstmrG  ?      
r   c                      t         ry   rF  rA  s     r   bidirectional_grurJ  C  rH  r   )FNNFNFFT)FFF)FFFT)r   numpyr   openvino.opset16opset16r   openvinor   r   	keras.srcr   keras.src.backend.openvino.corer   r   r   r	   r   r   r/   rr   rW   rX   r   r   r)  r?  rD  rG  rJ  rz   r   r   <module>rQ     s      #    ; ? < 9
OF 	@Fq.hP,f;@4 Eb Zzr   