Ë
    �\;j×  ã                   óV   — d dl Z d dlZd dlmZ d dlmZ  G d„ d«      Zd„ Zed„ «       Zy)é    N)Úcore)Úsignature_safe_contextmanagerc                   ó$   — e Zd ZdZd„ Zdd„Zd„ Zy)ÚStatezt
    record relationship of forward op/value and backward op/value
    one state must be bining with a program

    c                 óz  — || _         t        j                  t        «      | _        t        j                  t        «      | _        t        j                  t        «      | _        t        j                  t        «      | _        t        j                  t        «      | _        t        j                  t        «      | _	        y ©N)
ÚblockÚcollectionsÚdefaultdictÚlistÚvalue_to_valuegradÚvalue_to_sumvaluegradÚop_to_opgradÚvaluegrad_to_valueÚsumvaluegrad_to_valueÚopgrad_to_op)Úselfr	   s     úgG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/autograd/backward_utils.pyÚ__init__zState.__init__   s}   € ØˆŒ
ä"-×"9Ñ"9¼$Ó"?ˆÔÜ%0×%<Ñ%<¼TÓ%BˆÔ"ä'×3Ñ3´DÓ9ˆÔô #.×"9Ñ"9¼$Ó"?ˆÔÜ%0×%<Ñ%<¼TÓ%BˆÔ"ä'×3Ñ3´DÓ9ˆÕó    Nc                 ó6  — t        j                  t        «      | _        t        j                  t        «      | _        t        j                  t        «      | _        | j                  j                  «       D ]%  \  }}|g k7  sŒ|d   D ]  }|g| j                  |<   Œ Œ' | j                  j                  «       D ]%  \  }}|g k7  sŒ|d   D ]  }|g| j                  |<   Œ Œ' | j                  j                  «       D ]  \  }}|g k7  sŒ|g| j
                  |d   <   Œ  y )Nr   )
r
   r   r   r   r   r   r   Úitemsr   r   )r   ÚkÚvÚvalues       r   Úturn_mapzState.turn_map+   s  € Ü"-×"9Ñ"9¼$Ó"?ˆÔÜ%0×%<Ñ%<¼TÓ%BˆÔ"Ü'×3Ñ3´DÓ9ˆÔà×+Ñ+×1Ñ1Ö3‰DˆAˆqØ�B‹wØ˜qœT�EØ67°S�D×+Ñ+¨EÒ2ñ "ð 4ð ×.Ñ.×4Ñ4Ö6‰DˆAˆqØ�B‹wØ˜qœT�EØ9:¸�D×.Ñ.¨uÒ5ñ "ð 7ð ×%Ñ%×+Ñ+Ö-‰DˆAˆqØ�B‹wØ+,¨#�×!Ñ! ! A¡$Ò'ñ .r   c                 ó�  — t        |«      }| j                  j                  «       |_        | j                  j                  «       |_        | j                  j                  «       |_        | j
                  j                  «       |_        | j                  j                  «       |_        | j                  j                  «       |_        |S r   )r   r   Úcopyr   r   r   r   r   )r   Ú	new_blockÚstates      r   r   z
State.copy<   sŸ   € Ü�iÓ ˆØ#'×#:Ñ#:×#?Ñ#?Ó#AˆÔ Ø&*×&@Ñ&@×&EÑ&EÓ&GˆÔ#ð "×.Ñ.×3Ñ3Ó5ˆÔð $(×#:Ñ#:×#?Ñ#?Ó#AˆÔ Ø&*×&@Ñ&@×&EÑ&EÓ&GˆÔ#à!×.Ñ.×3Ñ3Ó5ˆÔàˆr   )ÚreturnN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   © r   r   r   r      s   „ ñò:ó.ó"r   r   c           	      ó®   — |D ]P  }|D ]I  }|j                   }d|v sŒt        j                  d|j                   › d| j                  «       › d�«         y ŒR y )NéÿÿÿÿzB[Prim] Decomp op does not support dynamic shape -1, but got shape z in inputs of op z . Prim will skip its vjp op.T)ÚshapeÚwarningsÚwarnÚname)ÚopÚinputsr   Úitemr)   s        r   Ú_check_vjp_dynamic_shaper0   M   si   € ÛˆÛˆDØ—J‘JˆEØ�UŠ{Ü—‘ØXÐY]×YcÑYcÐXdÐduÐvx×v}Ñv}Óvð  vAð  A^ð  _ôò ñ ñ r   c              #   ó  K  — t        j                  «       xr" t        j                  «       xr t        | |«      }	 |rt        j                  d«       d –— |rt        j                  d«       y y # |rt        j                  d«       w w xY w­w)NFT)r   Ú_is_bwd_prim_enabledÚ_enable_prim_dynamic_shaper0   Ú_set_prim_backward_enabled)r-   r.   Ú	skip_prims      r   Údynamic_shape_prim_vjp_guardr6   Y   s~   è ø€ ô 	×!Ñ!Ó#ò 	1Ü×+Ñ+Ó-ò	1ä$ R¨Ó0ð ð
2ÙÜ×+Ñ+¨EÔ2ÛáÜ×+Ñ+¨DÕ1ð ø‰9Ü×+Ñ+¨DÕ1ð üs   ‚9B¼A0 ÁBÁ0B
Â
B)	r
   r*   Úpaddle.baser   Úpaddle.base.wrapped_decoratorr   r   r0   r6   r&   r   r   Ú<module>r9      s7   ðó Û å Ý G÷4ñ 4ònð ñ2ó ñ2r   