
    ͑iM                       % S SK Jr  S SKrS SKJrJrJr  S SKrS SK	r	S SK	J
r
  SSK
Jr  SSKJrJr  SS	KJr  SS
KJrJrJrJrJrJrJr  \(       a&  S SKJr  S SKJrJr  S SKJr  \\ \   \!S   4   r"S\#S'   / r$0 \RJ                  RL                  RN                  S_\RJ                  RL                  RP                  S_\RJ                  RL                  RR                  S_\RJ                  RL                  RT                  S_\RJ                  RL                  RV                  S_\RJ                  RL                  RX                  S_\RJ                  RL                  RZ                  S_\RJ                  RL                  R\                  S_\RJ                  RL                  R^                  S_\RJ                  RL                  R`                  S_\RJ                  RL                  Rb                  S_\RJ                  RL                  Rd                  S_\RJ                  RL                  Rf                  S_\RJ                  RL                  Rh                  S_\RJ                  RL                  Rj                  S_\RJ                  RL                  Rl                  S _r7S/S! jr8S" r9S0S# jr: S1S$ jr;S1S% jr< S1S& jr=\>\!\\4\?\\4S'4           S2S( jjr@ " S) S*5      rA " S+ S,5      rB " S- S.5      rCg)3    )annotationsN)TYPE_CHECKINGAnyUnion)pir   )Value)_PADDLE_PIR_DTYPE_2_NUMPY_DTYPEParameterMeta   )core)EagerParamBaseVariable_cpu_num	_cuda_idsdefault_main_programin_dygraph_modein_pir_mode)	TypeAlias)	DTypeLike	ShapeLike)_DTypeLiteral)
_ClassInfo.r   r   boolfloat8_e4m3fnfloat8_e5m2float16uint16float32float64int8int16int32int64uint8	complex64
complex128pstringrawc                   U R                   S:X  a  U R                  [        R                  5      $ US:X  a  [        R                  " U / SQ5      n [        R
                  " S [        R                  /S9" U R                  5      n[        R                  " X R                  5      nUS:X  a  [        R                  " U/ SQ5      nU$ )Nr   NHWC)r      r   r   c                f    [         R                  " S[         R                  " SU 5      5      S   S-	  $ )N<I<fr      structunpackpackxs    W/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/base/data_feeder.py<lambda>)convert_float_to_uint16.<locals>.<lambda>L   s$    &--fkk$&:;A>"D    otypes)r   r   r,   r   )	sizeviewnpr   	transpose	vectorizeflatreshapeshape)datadata_formatnew_datas      r7   convert_float_to_uint16rH   D   s    yyA~yy##f||D,/||D		{ iiH zz(JJ/Hf<<,7Or:   c                    [         R                  " S [         R                  /S9" U R                  5      n[         R                  " XR
                  5      $ )Nc                f    [         R                  " S[         R                  " SU S-  5      5      S   $ )Nr/   r.   r0   r   r1   r5   s    r7   r8   )convert_uint16_to_float.<locals>.<lambda>X   s#    &--fkk$R&@A!Dr:   r;   )r?   rA   r   rB   rC   rD   )rE   rG   s     r7   convert_uint16_to_floatrL   V   s?    ||D

| iiH ::h

++r:   c                   [        U [        R                  R                  5      (       a  U [        ;   a	  [        U    $ [        U [        R
                  5      (       a  U [        ;   a	  [        U    $ GO[        U [        5      (       a  U [        [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                   [        R"                  [        R$                  [        R&                  [        R(                  [        R*                  [        R,                  4;   a  U R.                  $ OU S;   a  [1        U 5      $ U S;   a  g[3        SU  35      e)N)r   r   r   uint32uint64r   r    int4r!   r"   r#   r$   r%   r&   r'   r   r   )bfloat16r   zdtype must be any of [bool, float16, uint16, float32, float64, int8, int16, int32, int64, uint8, complex64, complex128, bfloat16], but received )
isinstancer   VarDescVarType_PADDLE_DTYPE_2_NUMPY_DTYPEDataTyper
   typer   r?   r   r   rN   rO   r   r    r!   r"   r#   r$   r%   r&   r'   __name__str	TypeErrordtypes    r7   convert_dtyper]   ^   s&   %--..//.u55%''332599 4	E4	 	 JJIIIIIIJJJJGGHHHHHHHHLLMM
 
  >>!!
&  
 
, u: L 
	OOTg	W r:   c                   [        5       (       aH  SSKJn  U" 5       R                  (       a  [        [
        [        4nO[        [
        4n[        XXcU5        O[        X[        [        4X45        [        U R                  XX45        g )Nr   lazy_init_helper)r   nn.initializer.lazy_initr`   stater	   r   r   
check_typer   check_dtyper\   )input
input_nameexpected_dtypeop_nameextra_messager`   expecteds          r7   check_variable_and_dtyperk      s]     }}?##}n=H}-H5hG5x&7PZPr:   c                   [        5       (       a  g SSKJn  SSKJn  U" 5       (       a7  [        U[        5      (       d  U4nU[        R                  R                  4-  nOQ[        U [        R                  R                  5      (       a(  U" 5       R                  (       d  [        SU SU S35      e[        X5      (       d#  [        SU SU S	U S
[        U 5       SU 3
5      eg )Nr   r_   r   )in_to_static_modezPlease use `with base.dygraph.guard()` as context or `paddle.disable_static()` to switch to dygraph mode firstly. Because received '' in z is an Eager Tensor.zThe type of '	 must be , but received . )r   ra   r`   dygraph.baserm   rR   tupler   eagerTensorrb   rZ   rW   )re   rf   expected_typerh   ri   r`   rm   s          r7   rc   rc      s     
 </ -//*,M$**++--	E4::,,	-	-6F6H6N6N!!+E':NP
 	
 e++J<uWIY}o_]abg]h\iiklykz{
 	
 ,r:   c                    [        5       (       a  g [        U 5      U;  a#  [        SU SU SU S[        U 5       SU 3
5      eg )NzThe data type of 'rn   ro   rp   rq   )r   r]   rZ   )input_dtyperf   rg   rh   ri   s        r7   rd   rd      sm     [!7 E')NCSSbcpq|c}b~  A  BO  AP  Q
 	
 8r:   )r#   r$   c                   [        5       (       a  g [        U SX!5        Ub  [        U [        [        45      (       do  U  Hi  n[        USX15        Uc  M  [        U[        [        45      (       d  M2  [        UR                  SUUSR                  SR                  U5      5      5        Mk     Ub4  [        U [        [        45      (       a  [        U R                  SXA5        g g g )NrD   zelement of shapez9If element of shape is Tensor, its data type should be {}z, )	r   rc   rR   r   r	   rd   r\   formatjoin)rD   rh   expected_shape_typeexpected_element_typeexpected_tensor_dtypeitems         r7   check_shaper      s    " ug2<(% 2 2 Dt/1FP$0Zx'6 6 JJ&)OVV		"78  (Z% . . 	EKK*?I.(r:   c                  8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
DataToDenseTensorConverteri  c                    Xl         X l        X0l        SnU R                   H  nUS:  a  US-  nUS:  d  M  S U l          O   [        U5      U l        U R                  5         g Nr   r   )place	lod_levelrD   r]   r\   _reset)selfr   r   rD   r\   negative_countss          r7   __init__#DataToDenseTensorConverter.__init__  s^    
"
A1u!#!!
  #5)
r:   c                r    / U l         [        U R                  5       Vs/ s H  n/ PM     snU l        g s  snf N)rE   ranger   lod)r   _s     r7   r   !DataToDenseTensorConverter._reset  s-    	 %dnn 56 51B 566s   4c                P    U R                  XR                  U R                  5        g r   )_feed_impl_r   r   )r   rE   s     r7   feedDataToDenseTensorConverter.feed  s    xx8r:   c                    US:X  a  U R                   R                  U5        g US   R                  [        U5      5        U H  nU R                  XBSS  US-
  5        M     g r   )rE   appendlenr   )r   rE   r   r   	each_datas        r7   r   &DataToDenseTensorConverter._feed_impl_  sS    >IIT"FMM#d)$!	  GY]C "r:   c                    [        U R                  U5       H5  u  p#X#:w  d  M  US:  d  M  US:  d  M  [        SU R                   SU 35      e   g )Nr   z2Shape not match. What is defined in data layer is , but receive )ziprD   
ValueError)r   rD   s1s2s       r7   _check_shape'DataToDenseTensorConverter._check_shape$  sN    $**e,FBxB!Ga HTbchbij  -r:   c                F   [         R                  " U R                  U R                  S9nU R                  (       aH  [        UR                  5      [        U R                  5      :w  a   UR                  U R                  5      n[        R                  " 5       nUR                  XR                  5        U R                  S:  a  UR                  U R                  5        U R                  5         U$ ! [         a&    [        SU R                   SUR                   35      ef = f)Nr[   z0Reshape error. What is defined in data layer is r   r   )r?   arrayrE   r\   rD   r   rC   r   r   DenseTensorsetr   r   set_recursive_sequence_lengthsr   r   )r   arrts      r7   doneDataToDenseTensorConverter.done+  s    hhtyy

3::399~TZZ0++djj1C
 	c::>>A,,TXX6 " $J4::,Vdehenendop s   (C0 00D )rE   r\   r   r   r   rD   N)rX   
__module____qualname____firstlineno__r   r   r   r   r   r   __static_attributes__ r:   r7   r   r     s!    79Dr:   r   c                  &    \ rS rSrS rS rS rSrg)BatchedTensorProvideri=  c           
     &   X l         X0l        X@l        / U l        XPl        U Hl  n[        5       (       d  UR                  S:X  d   S5       eU R                  R                  [        U R                   SUR                  UR                  S95        Mn     g )Nr   zlod_level must be 0r   r   rD   r\   )r   
batch_size	generator
converters	drop_lastr   r   r   r   rD   r\   )r   	feed_listr   r   r   r   vars          r7   r   BatchedTensorProvider.__init__>  sx    
$""C==}})@+@@)OO""***))))	 r:   c                `    U R                    Vs/ s H  oR                  5       PM     sn$ s  snf r   )r   r   )r   cs     r7   _doneBatchedTensorProvider._doneQ  s"    "&//2/Q/222s   +c              #    #    SnU R                  5        Hf  n[        X R                  5       H   u  p4UR                  R	                  U5        M"     US-  nXR
                  :X  d  MR  SnU R                  5       v   Mh     U R                  (       d  US:  a  U R                  5       v   g U R                   Vs/ s H  oUR                  5       PM       ng s  snf 7fr   )	r   r   r   rE   r   r   r   r   r   )r   idxeach_sample	each_sloteach_converterr   s         r7   __call__BatchedTensorProvider.__call__T  s     >>+K-0oo-N)	##**95 .O 1HCoo%jjl" , ~~#'**,!%1AXXZ11s   A!C'AC7CC)r   r   r   r   r   N)rX   r   r   r   r   r   r   r   r   r:   r7   r   r   =  s    &32r:   r   c                  .    \ rS rSrSrSS jrS rS rSrg)	
DataFeederie  a  
:api_attr: Static Graph

DataFeeder converts the data that returned by a reader into a data
structure that can feed into Executor. The reader is usually a
python generator that returns a list of mini-batch data entries.

Parameters:
    feed_list (list): Variables or names of Variables that need
        to feed.
    place (:ref:`api_paddle_CPUPlace` | :ref:`api_paddle_CUDAPlace` ):
        place indicates the device (CPU | GPU) the data will be fed into, if
        you want to feed data into GPU, please using :code:`base.CUDAPlace(i)`
        (:code:`i` represents the GPU id), or if you want to feed data into CPU,
        please using :code:`base.CPUPlace()`.
    program (:ref:`api_paddle_static_Program` , optional): The Program that will
        feed data into, if program is None, it will use default_main_program().
        Default None.

Raises:
    :code:`ValueError` - If some Variables are not in this Program.

Example:
    .. code-block:: python

        >>> import numpy as np
        >>> import paddle
        >>> from paddle import base

        >>> paddle.enable_static()
        >>> place = paddle.CPUPlace()
        >>> def reader():
        ...     for _ in range(4):
        ...         yield np.random.random([4]).astype('float32'), np.random.random([3]).astype('float32'),
        ...
        >>> main_program = paddle.static.Program()
        >>> startup_program = paddle.static.Program()

        >>> with paddle.static.program_guard(main_program, startup_program):
        ...     data_1 = paddle.static.data(name='data_1', shape=[None, 2, 2], dtype='float32')
        ...     data_2 = paddle.static.data(name='data_2', shape=[None, 1, 3], dtype='float32')
        ...     out = paddle.static.nn.fc(x=[data_1, data_2], size=2)
        ...     # ...
        >>> feeder = base.DataFeeder([data_1, data_2], place)

        >>> exe = paddle.static.Executor(place)
        >>> exe.run(startup_program)

        >>> feed_data = feeder.feed(reader())

        >>> # print feed_data to view feed results
        >>> # print(feed_data['data_1'])
        >>> # print(feed_data['data_2'])

        >>> outs = exe.run(
        ...     program=main_program,
        ...     feed=feed_data,
        ...     fetch_list=[out]
        ... )
        >>> print(outs)

Nc                Z   / U l         / U l        / U l        / U l        X l        [        5       (       a  Uc  [        R                  R                  5       nU H  n[        U[        5      (       a  [        S5      e[        U[        5      (       d  [        S5      eU R                   R                  UR                  5        U R                  R                  UR                   5        U R                  R                  S5        U R                  R                  UR"                  5        M     g Uc
  [        5       nU H  n[        U[        5      (       a   UR%                  S5      R'                  U5      n[        U[(        [        45      (       d  [        S5      eU R                   R                  UR                  5        U R                  R                  UR                   5        U R                  R                  UR*                  5        U R                  R                  UR"                  5        M     g )Nz+In PIR Mode, Not supported string input yetz(Feed list should contain a list of Valuer   z+Feed list should contain a list of variable)feed_dtypes
feed_namesfeed_shapesfeed_lod_levelr   r   r   r   r   rR   rY   r   r	   rZ   r   r\   namerD   blockr   r   r   )r   r   r   programeach_vars        r7   r   DataFeeder.__init__  s    
==((779%h,,$E  "(E22#$NOO  ''7&&x}}5##**1-  ''7 & .0%h,,&}}Q/33H=H!(Xu,=>>#E    ''7&&x}}5##**8+=+=>  ''7 &r:   c           
       ^ / n[        U R                  U R                  U R                  5       H+  u  p4nUR	                  [        U R                  UUUS95        M-     U4S jm[        R                  R                  5       (       a\  U HU  n[        U5      [        U5      :X  d   S[        U5      [        U5      4-  5       e[        X&5       H  u  pxT" Xx5        M     MW     OdU H^  n[        U5      [        U5      :X  d   S[        U5      [        U5      4-  5       e[        X&5       H  u  pxUR                  U5        M     M`     0 n	[        U R                  U5       H  u  pUR                  5       X'   M     U	$ )a  
According to :code:`feed_list` of :code:`DataFeeder` and :code:`iterable` , converts
the input into a data structure that can feed into Executor.

Parameters:
    iterable (generator): user defined python generator to read the raw input data

Returns:
    :code:`dict`: a :code:`dict` that contains (variable name - converted tensor) pairs

Example:
    .. code-block:: python

        >>> # In this example, reader - generator will return a list of ndarray of 3 elements
        >>> # feed API will convert each ndarray input into a tensor
        >>> # the return result is a dict with keys: data_1, data_2, data_3
        >>> # result['data_1']  a LoD-Tensor with shape of  [5, 2, 1, 3]. 5 is batch size, and [2, 1, 3] is the real shape of data_1.
        >>> # result['data_2'], result['data_3'] are similar.
        >>> import numpy as np
        >>> import paddle
        >>> from paddle import base

        >>> paddle.enable_static()

        >>> def reader(limit=5):
        ...     for i in range(1, limit + 1):
        ...         yield np.ones([6]).astype('float32') * i , np.ones([1]).astype('int64') * i, np.random.random([9]).astype('float32')
        ...
        >>> data_1 = paddle.static.data(name='data_1', shape=[None, 2, 1, 3])
        >>> data_2 = paddle.static.data(name='data_2', shape=[None, 1], dtype='int64')
        >>> data_3 = paddle.static.data(name='data_3', shape=[None, 3, 3], dtype='float32')
        >>> feeder = base.DataFeeder(['data_1','data_2', 'data_3'], paddle.CPUPlace())

        >>> result = feeder.feed(reader())
        >>> print(result['data_1'])
        >>> print(result['data_2'])
        >>> print(result['data_3'])

r   c                   > [        U[        [        45      (       a  U H  nT" X5        M     g U R                  U5        g r   )rR   listrs   r   )	converterrE   r   	feed_datas      r7   r   "DataFeeder.feed.<locals>.feed_data  s4    $u.. Di. ! t$r:   zDThe number of fields in data (%d) does not match len(feed_list) (%d))r   r   r   r   r   r   r   paddle	frameworkuse_pir_apir   r   r   r   )r   iterabler   r   rD   r\   r   r   r   ret_dict	each_namer   s              @r7   r   DataFeeder.feed  sz   P 	'*!1!143C3C(
#Ie ***'	(
	% ''))';'3y>9 7,%s9~6<7 79 25Y1L-Nn8 2M  (  (;'3y>9 7,%s9~6<7 79 25Y1L-N"''	2 2M  ( ),T__i)H%I"0"5"5"7H *Ir:   c                    Ub  [        U5      $ [        U R                  [        R                  5      (       a  [        [        5       5      $ [        5       $ r   )intrR   r   r   	CUDAPlacer   r   r   )r   
num_placess     r7   _get_number_of_places_!DataFeeder._get_number_of_places_  s<    !z?"

DNN33y{##:r:   )r   r   r   r   r   r   )	rX   r   r   r   __doc__r   r   r   r   r   r:   r7   r   r   e  s    =~!8FQfr:   r   )NCHW)r\   r   returnr   ) )rD   r   rh   rY   r|   r   r}   r   r~   ztuple[_DTypeLiteral, ...]r   None)D
__future__r   r2   typingr   r   r   numpyr?   r   r   r	   pir.corer
   r   r   r   r   r   r   r   r   r   r   r   typing_extensionsr   paddle._typingr   r   paddle._typing.dtype_liker   rW   rs   r   __annotations____all__rS   rT   BOOL
FP8_E4M3FNFP8_E5M2FP16BF16FP32FP64INT8INT16INT32INT64UINT8	COMPLEX64
COMPLEX128STRINGRAWrU   rH   rL   r]   rk   rc   rd   r   r   r   r   r   r   r   r:   r7   <module>r     s   #  , ,     E    +37!$s)U3D-E"EFJ	F
LLvLL##_ 	LL!!= 	LLy	
 	LLx 	LLy 	LLy 	LLv 	LL 	LL 	LL 	LL 	LL""K 	LL##\ 	LL  	LLe! ($,<@ ?AQ 
D EG

" 		' 	)
 8J(J(J(J $(J &(J 5(J 
(JV4 4n%2 %2P| |r:   