
    ёi&                        S SK Jr  S SKJrJr  S SKrS SKJr  SSKJrJ	r	J
r
  SSKJr  SSKJrJrJr  S	S
KJr  \(       a  S SKJr  S SKJr  / r " S S\5      r " S S\5      rg)    )annotations)TYPE_CHECKINGAnyN)_C_ops   )core	frameworkunique_name)
check_type)_current_expected_placein_dygraph_modein_pir_mode   )Initializer)Sequencec                  J   ^  \ rS rSrSrSU 4S jjr S     SS jjrSrU =r$ )	NumpyArrayInitializer'   zInit an parameter with an numpy array
This api initialize the tensor by numpy array.

Args:
    value (numpy): numpy array to initialize the tensor

Returns:
    A Tensor initialized by numpy.

c                n   > SS K n[        XR                  5      (       d   e[        TU ]  5         Xl        g )Nr   )numpy
isinstancendarraysuper__init___value)selfvaluer   	__class__s      \/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/nn/initializer/assign.pyr   NumpyArrayInitializer.__init__3   s+    %////    c           
        [        U[        R                  5      (       a  UR                  5       (       a   S5       eU R	                  U5      n[        U[        R
                  [        R                  R                  R                  45      (       d   e[        U[        R                  [        R                  R                  45      (       d   eUR                  nU[        R                  R                  R                  [        R                  R                  R                  4;   a  [        R                  R                  R                   nU R"                  R%                  S5      nUR'                  [(        R*                  " SR-                  SUR.                  S/5      5      UR0                  U[        R                  R                  R2                  SS9nOU[        R4                  R6                  [        R4                  R8                  4;   a8  Un[        R4                  R:                  nU R"                  R%                  S5      nOUnUnU R"                  nU[        R                  R                  R                   [        R4                  R:                  4;   a)  SnUR<                   Vs/ s H  n[?        U5      PM     n	nGOU[        R                  R                  R@                  [        R4                  RB                  4;   a)  SnUR<                   Vs/ s H  n[?        U5      PM     n	nGO2U[        R                  R                  RD                  [        R4                  RD                  4;   a(  SnUR<                   Vs/ s H  n[G        U5      PM     n	nOU[        R                  R                  RH                  [        R                  R                  RJ                  [        R4                  RH                  [        R4                  RJ                  4;   a(  S	nUR<                   Vs/ s H  n[G        U5      PM     n	nO"[M        S
U R"                  R                   35      eU R"                  RN                  S:  a  [M        S5      e[Q        5       (       a  [R        RT                  " U[W        U R"                  R0                  5      UU	[Y        5       5        U[        R                  R                  R                  [        R                  R                  R                  [        R4                  R6                  [        R4                  R8                  4;   a(  [R        RZ                  " Xc5      n
U
R]                  U5        gUR]                  U5        g[_        5       (       a  [R        R`                  " [W        U R"                  R0                  5      UU	[Y        5       5      nU[        R4                  R6                  [        R4                  R8                  4;   a  [R        RZ                  " Xc5      nU$ URc                  SSU0SUS[W        U R"                  R0                  5      Xy0SS9nU[        R                  R                  R                  [        R                  R                  R                  4;   a#  URc                  SSU0SU0UR                  US.S9  Xl2        U$ s  snf s  snf s  snf s  snf )a  Initialize the input tensor with Numpy array.

Args:
    var(Tensor): Tensor that needs to be initialized.
    block(Block|None, optional): The block in which initialization ops
           should be added. Used in static graph only, default None.

Returns:
    The initialization op
zCCurrently, assign initializer not support lazy init for dist param.float32.numpy_array_inittmpF)nameshapedtypetypepersistablevaluesint8_valueszUnsupported dtype i   @zXThe size of input is too big. Please consider saving it to file and 'load_op' to load itNassign_valueOutr)   r(   T)r*   outputsattrsstop_gradientcastX)in_dtype	out_dtype)r*   inputsr0   r1   )3r   r	   EagerParamBaseis_dist_check_blockVariablepaddlepirr   ParameterMetaBlockr)   VarDescVarTypeFP16BF16FP32r   astype
create_varr
   generatejoinr'   r(   DENSE_TENSORDataTypeFLOAT16BFLOAT16FLOAT32flatfloatFP64FLOAT64INT32intINT8UINT8
ValueErrorsizer   r   assign_value_listr   r3   _share_underline_tensor_tor   r.   	append_opop)r   varblockorigin_dtyper6   np_valueout_var
value_namevr,   var_tmpr\   s               r   forwardNumpyArrayInitializer.forward:   sR    sI4455#++--	QP	Q 
 !!%()$$fjjoo&C&CD
 
 	
 
 %)//6::3C3C!DEEEE yyLL  %%LL  %%
 
 ,,11I{{)))4H&& ))HH0#((EBC ii\\))66! ' G dmm33T]]5K5KLLG--I{{)))4HG$I{{H--22DMM4I4IJJ!J(061eAhF6F4<<//44dmm6K6KLL!J(061eAhF6F4<<//55t}}7J7JKK!J&.mm4mc!fmF4FLL  %%LL  &&MMMM	
 
 'J&.mm4mc!fmF4F1$++2C2C1DEFF;;00= 
   T[[&&'') $$))$$))%%&&	   !++g<2237  2237]]))T[[&&'')	G  5 5t}}7M7MNN ++g<N#(YT$++"3"34
 # ! 	B $$))$$))   >"CL$+MM%1	    FI_ 7 7 5 5s   &[[<["[ )r   )r   znpt.NDArray[Any]returnNoneN)r]   zpaddle.Tensorr^   zpaddle.pir.Block | Nonerg   zpaddle.Tensor | None)	__name__
__module____qualname____firstlineno____doc__r   re   __static_attributes____classcell__r   s   @r   r   r   '   s;    	 DHB B)@B	B Br!   r   c                  @   ^  \ rS rSrSr S     SU 4S jjjrSrU =r$ )Assign   a1
  Init an parameter with a numpy array, list, or tensor.

Args:
    value (Tensor|numpy.ndarray|list|tuple): numpy array, list, tuple, or tensor to initialize the parameter.
    name(str|None, optional): Normally there is no need for user to set this
        property. For more information, please refer to :ref:`api_guide_Name`. Default is None.

Returns:
    A parameter initialized by the input numpy array, list, or tensor.

Examples:
    .. code-block:: python

        >>> import paddle
        >>> import numpy as np

        >>> # numpy array
        >>> data_1 = paddle.ones(shape=[1, 2], dtype='float32')
        >>> weight_attr_1 = paddle.ParamAttr(
        ...     name="linear_weight_1",
        ...     initializer=paddle.nn.initializer.Assign(np.array([2, 2])))
        >>> bias_attr_1 = paddle.ParamAttr(
        ...     name="linear_bias_1",
        ...     initializer=paddle.nn.initializer.Assign(np.array([2])))
        >>> linear_1 = paddle.nn.Linear(2, 2, weight_attr=weight_attr_1, bias_attr=bias_attr_1)
        >>> print(linear_1.weight.numpy())
        [2. 2.]
        >>> print(linear_1.bias.numpy())
        [2.]

        >>> res_1 = linear_1(data_1)
        >>> print(res_1.numpy())
        [6.]

        >>> # python list
        >>> data_2 = paddle.ones(shape=[1, 2], dtype='float32')
        >>> weight_attr_2 = paddle.ParamAttr(
        ...     name="linear_weight_2",
        ...     initializer=paddle.nn.initializer.Assign([2, 2]))
        >>> bias_attr_2 = paddle.ParamAttr(
        ...     name="linear_bias_2",
        ...     initializer=paddle.nn.initializer.Assign([2]))
        >>> linear_2 = paddle.nn.Linear(2, 2, weight_attr=weight_attr_2, bias_attr=bias_attr_2)
        >>> print(linear_2.weight.numpy())
        [2. 2.]
        >>> print(linear_2.bias.numpy())
        [2.]

        >>> res_2 = linear_2(data_2)
        >>> print(res_2.numpy())
        [6.]

        >>> # tensor
        >>> data_3 = paddle.ones(shape=[1, 2], dtype='float32')
        >>> weight_attr_3 = paddle.ParamAttr(
        ...     name="linear_weight_3",
        ...     initializer=paddle.nn.initializer.Assign(paddle.full([2], 2)))
        >>> bias_attr_3 = paddle.ParamAttr(
        ...     name="linear_bias_3",
        ...     initializer=paddle.nn.initializer.Assign(paddle.full([1], 2)))
        >>> linear_3 = paddle.nn.Linear(2, 2, weight_attr=weight_attr_3, bias_attr=bias_attr_3)
        >>> print(linear_3.weight.numpy())
        [2. 2.]
        >>> print(linear_3.bias.numpy())
        [2.]

        >>> res_3 = linear_3(data_3)
        >>> print(res_3.numpy())
        [6.]
c                p  > SS K n[        USUR                  [        [        [
        R                  R                  4S5        [        U[        [        45      (       a  UR                  U5      n[        U[
        R                  R                  5      (       a  UR                  S5      n[        TU ]-  U5        g )Nr   r   rs   F)r   r   r   rY   tupler<   staticr;   r   arrayr   r   )r   r   r'   r   r   s       r   r   Assign.__init__  s    
 	]]D%)?)?@		
 edE]++KK&E eV]]3344KK&Er!    ri   )r   z0npt.NDArray[Any] | Sequence[int] | paddle.Tensorr'   z
str | Nonerg   rh   )rj   rk   rl   rm   rn   r   ro   rp   rq   s   @r   rs   rs      s5    ET   ?    
	   r!   rs   )
__future__r   typingr   r   r<   r   baser   r	   r
   base.data_feederr   base.frameworkr   r   r   initializerr   collections.abcr   numpy.typingnpt__all__r   rs   rz   r!   r   <module>r      sW    # %   0 0 * 
 %(
UK Up] " ] r!   