
    RЦiX                         S SK Jr  S SKJr  S SKr " S S\\5      r\\\4   rS\4S jrS\4S jr	S	\R                  S\4S
 jrS	\R                  S\4S jrg)    )Enum)UnionNc                   $    \ rS rSrSrSrSrSrSrg)Format   NCHWNHWCNCLNLC N)	__name__
__module____qualname____firstlineno__r   r	   r
   r   __static_attributes__r       Q/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/layers/format.pyr   r      s    DD
C
Cr   r   fmtc                     [        U 5      n U [         R                  L a  SnU$ U [         R                  L a  SnU$ U [         R                  L a  SnU$ SnU$ )zReturn spatial dimension indices for a given tensor format.

Args:
    fmt: Tensor format (NCHW, NHWC, NCL, or NLC).

Returns:
    Tuple of spatial dimension indices.
)   )   )r   r   )r      )r   r   r
   r	   r   dims     r   get_spatial_dimr      se     +C
fjj J 


	
 J	 
	 J Jr   c                 |    [        U 5      n U [         R                  L a  SnU$ U [         R                  L a  SnU$ SnU$ )zReturn channel dimension index for a given tensor format.

Args:
    fmt: Tensor format (NCHW, NHWC, NCL, or NLC).

Returns:
    Channel dimension index.
r   r   r   )r   r	   r   r   s     r   get_channel_dimr   &   sK     +C
fkk
 J	 


	 J Jr   xc                    U[         R                  :X  a  U R                  SSSS5      n U $ U[         R                  :X  a#  U R	                  S5      R                  SS5      n U $ U[         R                  :X  a  U R	                  S5      n U $ )zConvert tensor from NCHW format to specified format.

Args:
    x: Input tensor in NCHW format.
    fmt: Target format.

Returns:
    Tensor in target format.
r   r   r   r   )r   r	   permuter   flatten	transposer
   r   r   s     r   nchw_tor$   9   sz     fkkIIaAq!
 H	 


	IIaL""1a( H 


	IIaLHr   c                    U[         R                  :X  a  U R                  SSSS5      n U $ U[         R                  :X  a  U R	                  SS5      n U $ U[         R
                  :X  a"  U R	                  SS5      R                  SS5      n U $ )zConvert tensor from NHWC format to specified format.

Args:
    x: Input tensor in NHWC format.
    fmt: Target format.

Returns:
    Tensor in target format.
r   r   r   r   )r   r   r    r   r!   r
   r"   r#   s     r   nhwc_tor&   L   s~     fkkIIaAq!
 H	 


	IIaO H 


	IIaO%%a+Hr   )enumr   typingr   torchstrr   FormatTr   r   Tensorr$   r&   r   r   r   <module>r-      sr      S$  V
 * &u|| & &u|| & r   