Ë
    –\;jçK  ã                   óX  — 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	Z
d dlZd dlmZ ddlmZmZ dd	lmZmZmZmZ efd
„Zd„ Z G d„ de«      Z e«       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d(d„Z)d)d„Z*d„ Z+d„ Z,d*d „Z-d!„ Z.d+d"„Z/d#„ Z0d$„ Z1d%„ Z2d&„ Z3d'„ Z4y),é    N)Údefaultdict)ÚSequence)Úuuid4)ÚWeakKeyDictionary)Úconvert_np_dtype_to_dtype_é   )Úcheck_dtypeÚconvert_dtype)ÚBlockÚVariableÚ_current_expected_placeÚin_dygraph_modec           
      ó‚  — t        | |«      r| g|z  S 	 t        | «      }t        |«      |k7  r,t        d|z   dz   t	        |«      z   dz   t	        | «      z   «      ‚|D ]?  }t        |t        t        j                  j                  f«      r
J d|z  «       ‚	  ||«       ŒA |S # t        $ r t        d|z   dz   t	        | «      z   «      ‚w xY w# t        t        f$ rf t        d|z   dz   t	        |«      z   dz   t	        |«      z   dz   t	        | «      z   d	z   t	        |«      z   d
z   dz   t	        t        |«      «      z   «      ‚w xY w)am  
    Converts a single numerical type or iterable of numerical
    types into a numerical type list.

    Arguments:
      value: The value to validate and convert. Could an int, or any iterable
        of ints.
      n: The size of the list to be returned.
      name: The name of the argument being validated, e.g. "stride" or
        "filter_size". This is only used to format error messages.
      dtype: the numerical type of the element of the list to be returned.

    Returns:
      A list of n dtypes.

    Raises:
      ValueError: If something else than an int/long or iterable thereof was
        passed.
    zThe z)'s type must be list or tuple. Received: z's length must be z. Received: z7Required numerical type with '%s', but received Tensor.z#'s type must be a list or tuple of Ú z . Received: z including element z of type)Ú
isinstanceÚlistÚ	TypeErrorÚ
ValueErrorÚstrÚlenr   ÚpaddleÚpirÚOpResultÚtype)ÚvalueÚnÚnameÚdtypeÚ
value_listÚsingle_values         úbG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/utils/layers_utils.pyÚconvert_to_listr"   #   sÓ  € ô( �%˜Ôàð
àñð 	ð	Ü˜e›ˆJô ˆz‹?˜aÒÜØØñà&ñ'ô �a“&ñð !ñ	!ô
 �e“*ñóð ó 'ˆLÜ!Øœx¬¯©×)<Ñ)<Ð=ôð ð JØñóð ðÙ�lÕ#ð 'ð4 ÐøôU ò 	ÜØØñà=ñ>ô �e“*ñóð ð	ûô2 ¤	Ð*ò Ü ØØñà;ñ<ô ˜!“fñð ñ	ô
 ˜%“jñ!ð &ñ&ô ˜%“jñ!ð)ñ	)ô ˜,Ó'ñ
(ð !ñ!ð ñô œ$˜|Ó,Ó-ñ.óð ðús   ”B ÂC	Â'CÃ	A5D>c                 ój   — t        | t        «      ryt        | t        «      xr t        | t        «       S )z7
    Whether `seq` is an entry or nested structure
    T)r   Údictr   r   )Úseqs    r!   Úis_sequencer&   k   s-   € ô �#”tÔØÜ�cœ8Ó$ÒA¬Z¸¼SÓ-AÐ)AÐAó    c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚUniqueIdMapc                 óL   •— t         ‰| �  | «       t        t        «      | _        y ©N)ÚsuperÚ__init__r   r   Údata)ÚselfÚ	__class__s    €r!   r-   zUniqueIdMap.__init__u   s   ø€ Ü‰Ñ˜ÔÜ¤Ó&ˆ�	r'   )Ú__name__Ú
__module__Ú__qualname__r-   Ú__classcell__)r0   s   @r!   r)   r)   t   s   ø„ ÷'ð 'r'   r)   c                 óš   — t        | t        «      rt        | «      fS t        | t        «      rt	        | «      fS t
        |    j                  fS r+   )r   r   Úhashr   ÚidÚuniqueidmapÚint)Úobjs    r!   Úuniqueidr;   }   sB   € Ü�#”sÔÜ�S“	ˆ|ÐÜ	�CœÔ	Ü�3“ˆzÐä˜CÑ ×$Ñ$Ð&Ð&r'   c                  óf   — t        | «      dkD  sJ ‚d}| D ]  }|t        |«      z   }Œ t        |«      S )zM
    Return int hash value calculated by id(arg) or tuple(id1,id2, ...).
    r   © )r   r;   r6   )ÚargsÚinfoÚvs      r!   Ú_hash_with_idrA   †   s;   € ô ˆt‹9�qŠ=Ðˆ=Ø€DÛˆØ”h˜q“kÑ!‰ð ä�‹:Ðr'   c                 óf   — 	 t        | j                  «       «      S # t        $ r t        d«      ‚w xY w)zR
    Returns a sorted list of the dict keys, with error if keys not sortable.
    z,nest only supports dicts with sortable keys.)ÚsortedÚkeysr   )Údict_s    r!   Ú_sortedrF   ‘   s6   € ðHÜ�e—j‘j“lÓ#Ð#øÜò HÜÐFÓGÐGðHús   ‚ ›0c              #   ót   K  — t        | t        «      rt        | «      D ]	  }| |   –— Œ y | E d {  –—†  y 7 Œ­wr+   )r   r$   rF   )ÚiterableÚkeys     r!   Ú_yield_valuerJ   ›   s6   è ø€ Ü�(œDÔ!ô ˜8Ö$ˆCØ˜3‘-Óñ %ð ×Òús   ‚.8°6±8c              #   óv   K  — t        | «      D ]%  }t        |«      rt        |«      E d {  –—†  Œ"|–— Œ' y 7 Œ­wr+   )rJ   r&   Ú_yield_flat_nest)Únestr   s     r!   rL   rL   ¨   s2   è ø€ Ü˜$ÖˆÜ�qŒ>Ü'¨Ó*×*Ñ*à‹Gñ	  à*ús   ‚(9ª7«9c                 ó"   — t        | «      r| S | gS r+   ©r&   ©rM   s    r!   Úto_sequencerQ   °   s   € Ü�4ÔØˆàˆvˆr'   c                 óF   — t        | «      rt        t        | «      «      S | gS )zû
        :alias_main: paddle.flatten
        :alias: paddle.flatten,paddle.tensor.flatten,paddle.tensor.manipulation.flatten
        :old_api: paddle.base.layers.flatten

    Traverse all entries in the nested structure and put them into an list.
    )r&   r   rL   rP   s    r!   ÚflattenrS   ·   s$   € ô �4ÔÜÔ$ TÓ*Ó+Ð+àˆvˆr'   c                 ó’  ‡— t        | t        «      rFt        t        t        | «      |«      «      Š t	        | «      ˆfd„| j                  «       D «       «      S t        | t        «      rPt        | d«      rDt        | j                  t        «      r*t        d„ | j                  D «       «      r t	        | «      |Ž S  t	        | «      |«      S )zE
    Convert the sequence `args` to the same type as `instance`.
    c              3   ó,   •K  — | ]  }|‰|   f–— Œ y ­wr+   r=   )Ú.0rI   Úresults     €r!   Ú	<genexpr>z!_sequence_like.<locals>.<genexpr>Ð   s   øè ø€ ÐL¹O°S˜s F¨3¡KÔ0¹Oùs   ƒÚ_fieldsc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr+   )r   r   )rV   Úfs     r!   rX   z!_sequence_like.<locals>.<genexpr>Õ   s   è ø€ Ð=Ñ,< q”
˜1œc×"Ñ,<ùs   ‚)r   r$   ÚziprF   r   rD   ÚtupleÚhasattrrY   r   Úall)Úinstancer>   rW   s     @r!   Ú_sequence_likera   Å   s¢   ø€ ô �(œDÔ!ô ”cœ' (Ó+¨TÓ2Ó3ˆØŒt�H‹~ÓL¸H¿M¹M¼OÓLÓLÐLä�8œUÔ#Ü�H˜iÔ(Ü�x×'Ñ'¬Ô2ÜÑ=¨H×,<Ò,<Ó=Ô=ð Œt�H‹~˜tÐ$Ð$ð Œt�H‹~˜dÓ#Ð#r'   c                 óÒ   — g }t        | «      D ]T  }t        |«      r.t        |||«      \  }}|j                  t	        ||«      «       |}Œ<|j                  ||   «       |dz  }ŒV ||fS )z/
    Helper function for pack_sequence_as.
    é   )rJ   r&   Ú_packed_nest_with_indicesÚappendra   )Ú	structureÚflatÚindexÚpackedÚsÚ	new_indexÚchilds          r!   rd   rd   Þ   so   € ð €FÜ˜)Ö$ˆÜ�qŒ>Ü8¸¸DÀ%ÓHÑˆI�uØ�M‰Mœ.¨¨EÓ2Ô3Ø‰Eà�M‰M˜$˜u™+Ô&Ø�Q‰J‰Eð %ð �&ˆ=Ðr'   c                 ó\  — t        |«      st        d«      ‚t        | «      s*t        |«      dk7  rt        dt        |«      z  «      ‚|d   S t	        | «      }t        |«      t        |«      k7  r$t        dt        |«      t        |«      | |fz  «      ‚t        | |d«      \  }}t        | |«      S )zA
    Pack a given flattened sequence into a given structure.
    z flat_sequence must be a sequencerc   z6Structure is a scalar but len(flat_sequence) == %d > 1r   zyCould not pack sequence. Structure had %d elements, but flat_sequence had %d elements.  Structure: %s, flat_sequence: %s.)r&   r   r   r   rS   rd   ra   )rf   Úflat_sequenceÚflat_structureÚ_ri   s        r!   Úpack_sequence_asrq   î   sÉ   € ô �}Ô%ÜÐ:Ó;Ð;Ü�yÔ!Üˆ}Ó Ò"ÜØHÜ�mÓ$ñ%óð ð ˜QÑÐÜ˜YÓ'€NÜ
ˆ>Óœc -Ó0Ò0ÜðBô �NÓ#Ü�MÓ"ØØð	ñó	
ð 		
ô *¨)°]ÀAÓF�I€A€vÜ˜) VÓ,Ð,r'   c           	      ó–   — |D �cg c]  }t        |«      ‘Œ }}t        |Ž }t        |d   |D �cg c]  } | |Ž ‘Œ	 c}«      S c c}w c c}w )zO
    Apply `func` to each entry in `structure` and return a new structure.
    r   )rS   r\   rq   )Úfuncrf   rj   ro   ÚentriesÚxs         r!   Úmap_structurerv     sR   € ñ +4Ó4©) Q”g˜a•j¨)€NÐ4Ü�>Ð"€GÜ˜I a™L¹WÓ*E¹W¸©4°ª8¸WÑ*EÓFÐFùò 5ùâ*Es
   …A®A
c                 ó,   — | D ]  }t        |«      sŒ y y)zD
    Returns whether structure holds sequence like `list/dict`.
    TFrO   )rf   rj   s     r!   Úhold_mutable_varsrx     s   € ó ˆÜ�q�>Ùð ð r'   c                 óV   — t        j                   t        | «      «      }t        | |«      S )zE
    Returns vars copied from sequence without mutable property.
    )ÚcopyrS   rq   )rf   ro   s     r!   Úcopy_mutable_varsr{     s$   € ô —Y‘Yœw yÓ1Ó2€NÜ˜I ~Ó6Ð6r'   c                 ó&  — t        | «      }|t        |«      k7  rt        d| › d|› d�«      ‚|sy|r˜t        | «      }t        |«      }||k7  rt        dj	                  ||«      «      ‚t        | t        «      rRt        | j                  «       «      }t        |j                  «       «      }||k7  rt        dj	                  ||«      «      ‚t        t        | «      «      }t        t        |«      «      }	t        ||	«      D ]  \  }
}t        |
||«       Œ y)z6
    Helper function for `assert_same_structure`.
    zKThe two structures don't have the same nested structure.

First structure: z

Second structure: Ú.NzvThe two structures don't have the same sequence type. First structure has type {}, while second structure has type {}.zvThe two dictionaries don't have the same set of keys. First structure has keys {}, while second structure has keys {}.)r&   r   r   r   Úformatr   r$   ÚsetrD   r   rJ   r\   Ú _recursive_assert_same_structure)Únest1Únest2Úcheck_typesÚis_sequence_nest1Ú
type_nest1Ú
type_nest2Úkeys1Úkeys2Únest1_as_sequenceÚnest2_as_sequenceÚn1Ún2s               r!   r€   r€   &  s&  € ô $ EÓ*ÐØœK¨Ó.Ò.Üð Ø %˜wÐ&<¸U¸GÀ1ðFó
ð 	
ñ ØÙÜ˜%“[ˆ
Ü˜%“[ˆ
Ø˜Ò#ÜðMßMSÉVØ 
óNóð ô �eœTÔ"Ü˜Ÿ
™
›Ó%ˆEÜ˜Ÿ
™
›Ó%ˆEØ˜Š~Ü ðQßQWÑQWØ˜uóRóð ô œ\¨%Ó0Ó1ÐÜœ\¨%Ó0Ó1ÐÜÐ'Ð):Ö;‰ˆˆBÜ(¨¨R°Õ=ñ <r'   c                 ó4   — d„ } || |«      }  |||«      }| |fS )Nc           	      ó˜   ‡— ˆfd„}t        | «      r+t        | t        | «      D �cg c]
  } ||«      ‘Œ c}«      } | S  || «      } | S c c}w )Nc                 ó   •— | €‰S | S r+   r=   )ru   r:   s    €r!   Úchange_none_to_objz`padding_to_same_structure.<locals>._padding_to_same_structure_single.<locals>.change_none_to_objN  s   ø€ ØˆyØ�
ØˆHr'   )r&   rq   rS   )r   r:   r�   Úitems    `  r!   Ú!_padding_to_same_structure_singlezDpadding_to_same_structure.<locals>._padding_to_same_structure_singleM  sX   ø€ ô	ô
 �uÔÜ$Ø¼WÀU¼^ÓL¹^°TÑ*¨4Õ0¸^ÑLóˆEð
 ˆñ ' uÓ-ˆEØˆùò	 Ms   ¥A
r=   )r�   r‚   r:   r’   s       r!   Úpadding_to_same_structurer“   L  s+   € òñ .¨e°SÓ9€EÙ-¨e°SÓ9€EØ�%ˆ<Ðr'   c                 óÐ   — t        | «      rt        t        | «      «      nd}t        |«      rt        t        |«      «      nd}||k7  rt        d|| ||fz  «      ‚t	        | ||«       y)z@
    Confirm two nested structures with the same structure.
    rc   z�The two structures don't have the same number of elements.

First structure (%i elements): %s

Second structure (%i elements): %sN)r&   r   rS   r   r€   )r�   r‚   rƒ   Ú	len_nest1Ú	len_nest2s        r!   Úassert_same_structurer—   `  sm   € ô (3°5Ô'9””G˜E“NÔ#¸q€IÜ'2°5Ô'9””G˜E“NÔ#¸q€IØ�IÒÜð1ð ˜% ¨EÐ2ñ3ó
ð 	
ô % U¨E°;Õ?r'   c                 ó¼   — t        | «      |dz  k(  st        | «      |k(  sJ ‚d}t        | «      |dz  k(  r't        |«      D ]  }| |dz     | |dz  dz      k7  sŒd}Œ |S )z/
    Check whether padding is symmetrical.
    r   Trc   F)r   Úrange)ÚpaddingÚdata_dimÚis_sysÚis       r!   Ú_is_symmetric_paddingrž   p  sq   € ô ˆw‹<˜8 a™<Ò'¬3¨w«<¸8Ò+CÐCÐCØ€FÜ
ˆ7ƒ|�x !‘|Ò#Ü�x–ˆAØ�q˜1‘u‰~ ¨¨Q©°©Ñ!3Ó3Ø‘ð !ð €Mr'   c                 ój   — | D ].  }t        |t        t        j                  j                  f«      sŒ. y y)zC
    Check whether list or tuple contains variable / OpResult.
    TF)r   r   r   r   r   )Úlist_or_tupler‘   s     r!   Ú_contain_varr¡   }  s/   € ó ˆÜ�dœX¤v§z¡z×':Ñ':Ð;Õ<Ùð ð r'   c           
      óÜ  — |€
t        «       }g }| D ]Ø  }t        |t        j                  j                  «      rmd|_        t        |j                  «      |k7  rt        j                  ||¬«      }|j                  g k7  rt        j                  |g «      }|j                  |«       Œ”t        j                  g |t        t        j                  |«      «      |«      }|j                  |«       ŒÚ |S )NT©ru   r   )r   r   r   r   r   Ústop_gradientr
   r   ÚcastÚshapeÚreshapere   Úfullr   Únp)Úele_listÚplaceÚdefault_dtypeÚint_tensor_listÚeleÚtemp_outs         r!   Úget_int_tensor_listr°   ‡  sÄ   € Ø€}Ü'Ó)ˆà€OÛˆÜ�cœ6Ÿ:™:×.Ñ.Ô/Ø $ˆCÔÜ˜SŸY™YÓ'¨=Ò8Ü—k‘k C¨}Ô=�Ø�y‰y˜BŠÜ—n‘n S¨"Ó-�Ø×"Ñ" 3Õ'ä—{‘{ØØÜ*¬2¯8©8°MÓ+BÓCØó	ˆHð ×"Ñ" 8Õ,ð ð  Ðr'   c                 ó„  ‡‡— ddl mŠ d„ }ˆˆfd„}t        |t        «      r\d|_        t        |j                  dddgd	d
‰z   dz   «       t        |j                  «      dk(  rt        j                  |d«      }|| d<   y t        |t        t        f«      r# ||«      |d<   t        |«      r ||«      | d<   y y t        d«      ‚)Nr   ©Úfill_constantc                 ó–   — g }t        | «      D ]8  \  }}t        |t        «      r|j                  d«       Œ(|j                  |«       Œ: |S )Néÿÿÿÿ)Ú	enumerater   r   re   )Ú
list_shapeÚ
attr_shapeÚidxÚdims       r!   Ú_get_attr_shapez0get_shape_tensor_inputs.<locals>._get_attr_shape¢  sH   € Øˆ
Ü! *Ö-‰HˆC�Ü˜#œxÔ(Ø×!Ñ! "Õ%à×!Ñ! #Õ&ð	 .ð
 Ðr'   c           	      ó|  •— g }t        | «      D ]ª  \  }}t        |t        «      rxd|_        t	        |j
                  dt        |«      z   dz   ddg‰d‰z   dz   «       t        |j
                  «      dk(  rt        j                  |d¬«      }|j                  |«       ŒŽ ‰g d|d¬	«      }|j                  |«       Œ¬ |S )
NTzshape[Ú]Úint32Úint64ú(When type of shape inzis list or tuple.)r£   ©Ú	force_cpu)r¶   r   r   r¤   r	   r   r   r
   r   r¥   re   )r·   Úshape_tensor_listr¹   rº   r¯   r³   Úop_types        €€r!   Ú_get_shape_tensorz2get_shape_tensor_inputs.<locals>._get_shape_tensor«  s¾   ø€ ØÐÜ! *Ö-‰HˆC�Ü˜#œxÔ(Ø$(�Ô!ÜØ—I‘IØœs 3›xÑ'¨#Ñ-Ø˜gÐ&ØØ,¨wÑ6Ð9MÑMôô ! §¡Ó+¨wÒ6Ü Ÿ+™+¨°7Ô;�CØ!×(Ñ(¨Õ-á(¨¨W°cÀTÔJ�Ø!×(Ñ(¨Õ2ð .ð  !Ð r'   Tr¦   r¾   r¿   r³   rÀ   z is Variable.)ÚShapeTensorÚShapeTensorListz0Shape only supports Variable, or list, or tuple.)Úpaddle.tensorr³   r   r   r¤   r	   r   r
   r   r¥   r   r]   r¡   r   )ÚinputsÚattrsr¦   rÄ   r»   rÅ   r³   s      `  @r!   Úget_shape_tensor_inputsrË   Ÿ  sÃ   ù€ Ý+òõ!ô( �%œÔ"Ø"ˆÔÜØ�K‰KØØ�gÐØØ$ wÑ.Ð1AÑAô	
ô ˜Ÿ™Ó%¨Ò0Ü—K‘K  wÓ/ˆEØ %ˆˆ}ÒÜ	�EœD¤%˜=Ô	)Ù(¨Ó/ˆˆg‰Ü˜ÔÙ(9¸%Ó(@ˆFÐ$Ò%ð ô ÐJÓKÐKr'   c                 ó
  — ddl m} g }| D ]u  }t        |t        t        j
                  j                  f«      rd|_        |j                  |«       ŒFt        |t        «      sJ ‚ |dg||d¬«      }|j                  |«       Œw |S )zA
    Converts all elements of a list to Variable / OpResult.
    r   r²   Trc   rÁ   )
rÈ   r³   r   r   r   r   r   r¤   re   r9   )Úold_listr   r³   Únew_list_tensorr®   r¯   s         r!   Ú_convert_to_tensor_listrÏ   Ó  s}   € õ ,à€OÛˆÜ�cœH¤f§j¡j×&9Ñ&9Ð:Ô;Ø $ˆCÔØ×"Ñ" 3Õ'ä˜c¤3Ô'Ð'Ð'Ù$ a S¨%°ÀÔEˆHØ×"Ñ" 8Õ,ð ð Ðr'   c                 óú   — t        | t        t        f«      r2| D �cg c]%  }t        |t        «      r|j	                  d«      n|‘Œ' } }| S t        «       r#| j                  t        «      j                  «       } | S c c}w )zI
    Convert shape(list, tuple, variable) to list in imperative mode
    r   )	r   r   r]   r   r‘   r   Úastyper9   Útolist)r¦   ru   s     r!   Úconvert_shape_to_listrÓ   å  sm   € ô �%œ$¤˜Ô'ÙFKÓLÁeÀœj¨¬HÔ5�—‘˜”¸1Ñ<ÀeˆÐLð €Lô ÔØ—L‘L¤Ó%×,Ñ,Ó.ˆEØ€Lùò	 Ms   ›*A8c                 óà   — t        | t        «      rt        | j                  dddgd«       y| D ]>  }t        |t        «      rŒ|dk  rt	        d«      ‚t        |t
        «      rŒ5t        d«      ‚ y)	zU
    Check shape type and shape elements type before passing it to fill_constant
    r¦   r¾   r¿   r³   r   zDAll elements in ``shape`` must be positive when it's a list or tuplezDAll elements in ``shape`` must be integers when it's a list or tupleN)r   r   r	   r   r   r9   r   )r¦   r®   s     r!   Úcheck_shaperÕ   ñ  sl   € ô �%œÔ"Ü�E—K‘K ¨7°GÐ*<¸oÕNãˆCÜ˜c¤8Õ,Ø˜’7Ü$Ø^óð ô " #¤sÕ+Ü#Ø^óð ñ r'   c                 ó¬   — t        «       sJd| j                  v r;t        |t        «      r*t	        |«      }|r| j
                  j                  |«       yyyyy)aQ  Try to set static shape of tensor from a shape tensor.

    For example,

    import paddle
    paddle.enable_static()
    data = paddle.static.data(name="x", shape=[-1, 2], dtype='float32')
    shape = paddle.shape(data)  # shape should be [-1, 2] instead of [-1, -1]
    x = paddle.uniform(shape)
    print(x.shape)
    # (-1, 2)

    rµ   N)r   r¦   r   r   Ú"try_get_constant_shape_from_tensorÚdescÚ	set_shape)Útensorr¦   s     r!   Útry_set_static_shape_tensorrÛ     sS   € ô Ôà�—‘ÑÜ˜%¤Ô*Ü:¸5ÓA�ÙØ—K‘K×)Ñ)¨%Õ0ð ð +ð ð r'   c                 óÜ   — t        «       s[	 | j                  �M| j                  }|j                  dk(  r2| j                  j                  |j
                  d      }|j                  S yy#  Y yxY w)aN  Try to get shape from a tensor with constant value.

    For example,

    import paddle
    paddle.enable_static()
    data = paddle.static.data(name="x", shape=[-1, 2], dtype='float32')
    shape = paddle.shape(data)  # shape should be [-1, 2] instead of [-1, -1]
    x = paddle.uniform(shape)
    print(x.shape)
    # (-1, 2)

    Nr¦   r   )r   Úopr   ÚblockÚvarsÚinput_arg_namesr¦   )Úshape_tensorÚgenerate_opÚvars      r!   r×   r×     st   € ô Ôð		Ø�‰Ð*Ø*Ÿo™o�Ø×#Ñ# wÒ.Ø&×,Ñ,×1Ñ1Ø#×3Ñ3°AÑ6ñ�Cð Ÿ9™9Ð$ð ð øð	Ùús   ŒAA' Á'A+c                 óÖ  — t        | t        «      sJ d«       ‚| j                  dk7  sJ d«       ‚t        «       }t        «       }| j                  D ]–  }|j
                  D ];  }|j                  |«      D ]%  }| j                  |«      rŒ|j                  |«       Œ' Œ= |j                  D ];  }|j                  |«      D ]%  }| j                  |«      rŒ|j                  |«       Œ' Œ= Œ˜ ||fS )zg
    Returns the inputs and outputs variable used in this block but not
    created in this block.
    z9input non-Block argument for get_inputs_outputs_in_block.rµ   z2input block should be a sub-block, not main block.)r   r   Ú
parent_idxr   ÚopsÚinput_namesÚinputÚhas_varÚaddÚoutput_namesÚoutput)rÞ   Úinner_inputsÚinner_outputsrÝ   ÚinameÚin_var_nameÚonameÚout_var_names           r!   Úget_inputs_outputs_in_blockró   8  sç   € ô
 ØŒuôð CàBóCð ð 	×Ñ˜BÒð<à;ó<Øô “5€LÜ“E€MØ�iŒiˆØ—^”^ˆEØ!Ÿx™x¨ž�Ø—}‘} [Õ1à ×$Ñ$ [Õ1ñ  /ð $ð
 —_”_ˆEØ "§	¡	¨%Ö 0�Ø—}‘} \Õ2à!×%Ñ% lÕ3ñ !1ñ %ð ð ˜Ð&Ð&r'   r+   )T)Nr¿   )r¾   )5rz   Úcollectionsr   Úcollections.abcr   Úuuidr   Úweakrefr   Únumpyr©   r   Úpaddle.pir.corer   Úbase.data_feederr	   r
   Úbase.frameworkr   r   r   r   r9   r"   r&   r)   r8   r;   rA   rF   rJ   rL   rQ   rS   ra   rd   rq   rv   rx   r{   r€   r“   r—   rž   r¡   r°   rË   rÏ   rÓ   rÕ   rÛ   r×   ró   r=   r'   r!   Ú<module>rü      sÜ   ðó Ý #Ý $Ý Ý %ã ã Ý 6ç 9÷ó ð +.ó EòPBô'Ð#ô 'ñ ‹m€ò'òòHò
òòòò$ò2ò -ò:Gòò7ò#>óLó(@ò 
òóò01Lóhò$	òò&1ò.ó:'r'   