
    x-j,                        d dl mZmZ d dlmZmZ ddddddd	d
dddddddddddddddddddddddddddddddddd d!	d"Z ej                    Z ej	                    Z
 ej                    Z G d# d$ej                  Zd%S )&    )_C_ops_legacy_C_ops)core	frameworkgraph_send_recvX	Src_index	Dst_indexOut	Dst_count)final_op_namex	src_index	dst_indexout	dst_countmatmultrans_xtrans_yY)r   transpose_xtranspose_yr   yr   trunc)r   r   r   absdigammadiagonalInputoffsetaxis1axis2)r   r   r   r    r!   r   	roi_alignROIsRoisNumpooled_heightpooled_widthspatial_scalesampling_ratioaligned)	r   r   boxes	boxes_numr%   r&   r'   r(   r)   )r   	matmul_v2r   r   r   r   r"   c                   R     e Zd ZdZ fdZ	 	 d
dZ	 	 d
dZ	 	 d
dZd Zd	 Z	 xZ
S )Tracera  
    :api_attr: imperative

    Tracer is used to execute and record the operators executed, to construct the
    computation graph in dygraph model. Tracer has two mode, :code:`train_mode`
    and :code:`eval_mode`. In :code:`train_mode`, Tracer would add backward network
    automatically and perform AutoGrad by method :code:`loss.backward()`.
    In :code:`eval_mode`, Tracer would not add backward network.

    This is a low level API, users don't need to use it directly.
    c                 V    t                                                       d| _        d S NT)super__init___train_mode)self	__class__s    Z/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/base/dygraph/tracer.pyr2   zTracer.__init__k   s'        FNc                 N   t           j        |         }t          |         }t          |         }	t          |         }
g }t          t          |                    D ]}d }||         }|	|         }||                                v r	||         }n||                                v r	||         }nd|dd          v r:|d d         }||                                v sJ t          ||                   }|}nbd|dd          v rV|d d         }t          |           ||                                v r	||         }n||                                v r||         }||	                    |           |dk    rIt          |t                    r|	                    |d                    L|	                    |           c|dk    r.t          |t                    sJ |	                    |           |dk    sJ t          |t                    sJ |	                    |           g }|                                D ]/\  }}|	                    |           |	                    |           0 |g ||R  }|dk    rt          |                                          d	k    sJ t          t          |                                                    }t          t          |                    D ])}||                             ||         |                    *d S t          |t"                    rt          t          |
                    D ]}|
|         }||                                v rt          ||         t                    rTt          t          ||                             D ]0}||         |                             ||         |         d
           1t          ||         t                    r)||         d                             ||         d
           ||                             ||         d
           d S t          |t                    rt          |                                          d	k    sJ t          t          |                                                    }t          t          |                    D ]*}||         |                             ||         d
           +d S t          |                                          d	k    sJ t          t          |                                                    }t          ||         t                    r$||         d                             |d
           d S ||                             |d
           d S )NNumVartensorr   listintload_combine   F)r   __dict__core_ops_args_infocore_ops_args_type_infocore_ops_returns_inforangelenkeysprintappend
isinstancer=   r>   itemsnextiter_share_underline_tensor_totuplereconstruct_from_)r4   op_typeinputsoutputsattrsstop_gradientinplace_mapfunction_ptrop_argsop_args_type
op_returnsarg_listiarg_to_appendarg_namearg_typeout_namenum_outs
attrs_listkvreturnskeyjretnames                            r6   eager_legacy_trace_opzTracer.eager_legacy_trace_opp   s    %-g6$W-.w7*73
s7||$$ '	/ '	/A MqzH#AH6;;==(( &x 0W\\^^++ ' 1HRSSM))'}H#w||~~5555"78#455H$,MMhrssm++'}H(OOO7<<>>11(/(9!V[[]]22(.x(8$....X%%mT22 3OOM!$45555OOM2222V##!-66666....5((((!-55555....
KKMM 	! 	!DAqa   a    ,66:666n$$w||~~&&!++++tGLLNN++,,C3w<<(( G G
55gcl1oFFFFFgu%% 	?3z??++  $Q-gllnn,,!'!*d33 !&s71:!7!7  A#G,Q/AA '
1u   
 &gg&6== #G,Q/AA '
E    $G,>> '
E   $ && 	?w||~~&&!++++tGLLNN++,,C3w<<(( E EQ11'!*eDDDDE E w||~~&&!++++tGLLNN++,,C'#,-- ?Q11'5AAAAA..w>>>>>r7   c                 L	   |t                                           v sJ t           |         d         }t          j        |         }t          j                    }t          j                    }	t          j                    }
||         }|	|         }|
|         }g }t          t          |                    D ]f}||         }||         }|t           |                                         v sJ t           |         |         }||                                v r	||         }nF||                                v r	||         }n'||                                v r|dk    r	||         }nd }|dk    r|	                    |           |dk    rIt          |t                    r|	                    |d                    |	                    |           |dk    r.t          |t                    sJ |	                    |           M|J |	                    |           h || }t          |t                    rt          t          |                    D ]}||         }|t           |                                         v sJ t           |         |         }||                                v rt          ||         t                    rTt          t          ||                             D ]0}||         |                             ||         |         d           1||         d                             ||         d           d S t          |t                    rt          |                                          dk    sJ t          t          |                                                    }t          t          |                    D ]*}||         |                             ||         d           +d S t          |                                          dk    sJ t          t          |                                                    }t          ||         t                    r$||         d                             |d           d S ||                             |d           d S )Nr    r<   r   r=   Fr@   )name_mappingrG   r   rA   get_core_ops_args_infoget_core_ops_args_type_infoget_core_ops_returns_inforE   rF   rI   rJ   r=   rO   rP   rL   rM   )r4   rQ   rR   rS   rT   rU   rV   rW   rB   rC   rD   rX   rY   rZ   r[   r\   eager_arg_namer_   r^   r]   re   eager_retnamerh   rg   rf   s                            r6   eager_trace_opzTracer.eager_trace_op   s    ,++------w'8w/#:<<"("D"F"F & @ B B$W-.w7*73
s7||$$ 	/ 	/A$QZN#AH!\'%:%?%?%A%AAAAA#G,^<H6;;==(( &x 0W\\^^++ ' 1UZZ\\))h"nn %h !%2~~....X%%mT22 3OOM!$45555OOM2222V##!-66666....$,,,....,)gu%% 	?3z??++ Q Q *1$W(=(B(B(D(DDDDD&w/>gllnn,,!'!*d33 Q!&s71:!7!7  A#G,Q/AA '
1u   
  (+==gaj%PPPQ Q && 	?w||~~&&!++++tGLLNN++,,C3w<<(( E EQ11'!*eDDDDE E w||~~&&!++++tGLLNN++,,C'#,-- ?Q11'5AAAAA..w>>>>>r7   c                 2   t          j                    rv|t                                          v r?t          |         d         }|t          j        v sJ |                     ||||||           d S |                     ||||||           d S t          d          )Nr   z#trace_op only  work in dygraph mode)	r   in_dygraph_moderl   rG   r   rA   rr   ri   
ValueError)r4   typerR   rS   rT   rU   rV   s          r6   trace_opzTracer.trace_op+  s     $&& 	D |((****#D)/:}55555##&'5-     **&'5-     BCCCr7   c                     d| _         d S r0   r3   r4   s    r6   
train_modezTracer.train_modeE  s    r7   c                     d| _         d S )NFry   rz   s    r6   	eval_modezTracer.eval_modeH  s     r7   )FN)__name__
__module____qualname____doc__r2   ri   rr   rw   r{   r}   __classcell__)r5   s   @r6   r.   r.   ^   s        
 
          d? d? d? d?X S? S? S? S?v D D D D4     ! ! ! ! ! ! !r7   r.   N)paddler   r   paddle.baser   r   rl   rm   rB   rn   rC   ro   rD   r.    r7   r6   <module>r      s|    ) ( ( ( ( ( ( ( ' ' ' ' ' ' ' ' +     "    !    #  $  %(&(*
 
gD DL :]9;; C-CEE ??AA k! k! k! k! k!T[ k! k! k! k! k!r7   