
    sg	                     .    d dl Z d dlmZ ddZddZd Zy)    N)reducec                 n    |r| j                         |k(  r| S | j                         j                  |      S )N)size
contiguousview)tensorr   check_same_sizes      R/var/www/html/venv/lib/python3.12/site-packages/torch/autograd/_functions/utils.py
maybe_viewr      s1    6;;=D0##D))    c                 x   |r| j                         |k(  r| S | j                         t        |      z
  }t        t	        | j                         |d  |            D cg c]  \  }\  }}||k7  r| }}}}t        |      D ]  }| j                  dd      }  |D ]  }| j                  |d      }  | S c c}}}w )Nr   F)keepdimT)r   dimlen	enumerateziprangesum)	r   old_sizer	   num_unsqueezedr   expandedoriginalexpanded_dims_s	            r
   maybe_unexpandr      s    6;;=H4ZZ\CM1N *3no.9*
 %C%(H x	 	M  >" .Au-. /C./Ms   B5c                 6   d}d}t        |       }t        |      }t        t        j                  |       }t        t        j                  |      }||k  r
d}|dk7  r+d}n(||kD  rd}|dk7  r| ||z
  d  |k7  rd}n| |k7  r	d}|dk7  rd}|st	        d|  d|       |S )NFT   zCNumpy style broadcasting is not supported in ONNX. Input dims are: z, )r   r   operatormul
ValueError)dims1dims2	broadcast	supportedlen1len2numel1numel2s           r
   check_onnx_broadcastr)   &   s    IIu:Du:DHLL%(FHLL%(Fd{	Q;I		Q;5/58IE>I{!	QRWQXXZ[`Zab
 	
 r   )T)r   	functoolsr   r   r   r)    r   r
   <module>r,      s     *4r   