
    h              
           S SK JrJrJr  S SKrS SKJr  SSKJr  SSK	J
r
  \R                  " S5      S\
S	\S
\
4S j5       rS\
S\S\S
\\\4   4S jrS\
S\S\S
S4S jrS rS rg)    )AnyCallableTupleN)Ops   )registry)Modelzwith_cpu.v1layeropsreturnc                     U R                  5         [        SU R                   S3[        U /U[        U R
                   Vs0 s H  o"U R                  U5      _M     snS9$ s  snf )Nz	with_cpu())layersr   initdims)to_cpur	   nameforwardr   	dim_namesmaybe_get_dim)r
   r   r   s      O/home/james-whalen/.local/lib/python3.13/site-packages/thinc/layers/with_cpu.pywith_cpur      s`    	LLN
EJJ<q!w:?//J/$E''--/J  Ks    A modelXis_trainc                    ^ U R                   S   R                  [        U5      5      u  nm[        U R                  U5      nU4S jnXE4$ )Nr   c                 *   > [        U 5      nT" U5      $ N)_to_cpu)	d_outputscpu_d_outputsbackprops     r   with_cpu_backprop"forward.<locals>.with_cpu_backprop   s    	*&&    )r   begin_updater   
_to_devicer   )r   r   r   cpu_outputsgpu_outputsr#   r"   s         @r   r   r      sD    !LLO88DKUYY4K' ))r%   Yc                 @    U R                   S   R                  X5        g )Nr   )r   
initialize)r   r   r*   s      r   r   r   #   s    	LLOq$r%   c                 t   [        U [        R                  5      (       a  U $ [        U [        5      (       a%  [        U  Vs/ s H  n[	        U5      PM     sn5      $ [        U [
        5      (       a  U  Vs/ s H  n[	        U5      PM     sn$ [        U S5      (       a  U R                  5       $ U $ s  snf s  snf )Nget)
isinstancenumpyndarraytupler   listhasattrr.   )r   xs     r   r   r   '   s    !U]]##	Au		!,!Qgaj!,--	At		$%&Aq
A&&	E		uuw -&s    B05B5c           	         [        U[        5      (       a%  [        U Vs/ s H  n[        X5      PM     sn5      $ [        U[        5      (       a  U Vs/ s H  n[        X5      PM     sn$ U R	                  U5      $ s  snf s  snf r   )r/   r2   r'   r3   asarray)r   r   r5   s      r   r'   r'   4   sk    !U!4!Qj(!455	At		,-.Aq
3"A..{{1~	 5.s   A=B)typingr   r   r   r0   thinc.backendsr   configr   r   r	   r   r   boolr   r   r   r'    r%   r   <module>r=      s    ' '     
	E 	 	 	  	*5 *S *D *U3=5I *% %# %# %$ %
r%   