o
    "ÕjC  ã                   @   sH   d dl Zd dlZd dlmZmZ d dlmZ dd„ Zdd„ Z	dd	„ Z
dS )
é    N)Úcheck_dtypeÚconvert_dtype)ÚVariablec                 C   s’   | du r	dg} | S t | ttjtjfƒr| g} | S t | ttjjfƒrBd| _	t
| jdddgdd| d	 ƒ t| jƒdkr@t | d¡} | S t| ƒg} | S )
z]
    Convert out_size(int, np.int32, np.int64, Variable) to list
    in imperative mode.
    Nr   TÚout_sizeÚint32Úint64Úop_typeú(When type of out_size inú is Variable.))Ú
isinstanceÚintÚnpr   r   r   ÚpaddleZpirZOpResultÚstop_gradientr   Údtyper   Úcast)r   r   © r   úg/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/geometric/message_passing/utils.pyÚconvert_out_size_to_list   s(   ñó
û
ÿr   c                 C   s”   |du rdg|d< dS t |ttjtjfƒr|g|d< dS t |tƒrFd|_t|jdddgdd| d	 ƒ t	|jƒdkr@t
 |d¡}|| d
< dS tdƒ‚)zk
    Convert out_size(int, np.int32, np.int64, Variable) to inputs
    and attrs in static graph mode.
    Nr   r   Tr   r   r   r	   r
   ZOut_sizez'Out_size only supports Variable or int.)r   r   r   r   r   r   r   r   r   r   r   r   Ú	TypeError)ZinputsÚattrsr   r   r   r   r   Úget_out_size_tensor_inputs/   s"   

ûr   c           	      C   sþ   t | jƒdkrt | ddg¡} t |jƒdkrt |ddg¡}t | ¡}t |¡}t | jƒt |jƒkr{tt | jƒt |jƒƒ}|t | jƒ }|t |jƒ }|d gdg|  t|dd… ƒ }|d gdg|  t|dd… ƒ }t | |¡} t ||¡}| |fS )zm
    Expand dims to ensure there will be no broadcasting issues with different
    number of dimensions.
    é   éÿÿÿÿr   N)ÚlenÚshaper   ZreshapeÚmaxÚlist)	ÚxÚyZx_shapeZy_shapeZ	max_ndimsZx_pad_ndimsZy_pad_ndimsZnew_x_shapeZnew_y_shaper   r   r   Úreshape_lhs_rhsH   sB   

ÿÿýýùÿÿÿýýùÿ
r    )Únumpyr   r   Zpaddle.base.data_feederr   r   Zpaddle.base.frameworkr   r   r   r    r   r   r   r   Ú<module>   s   