
    Ng                     b    d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	 g dZ
d Zd Zd Zd	 ZdS )
    N)deepcopy)nn)
Conv2dSameBatchNormAct2dLinear)extract_layer	set_layeradapt_model_from_stringadapt_model_from_filec                 l   |                     d          }| }t          | d          r|d         dk    r| j        }t          | d          s|d         dk    r
|dd          }|D ]P}t          ||          r;|                                st	          ||          }7|t          |                   }M|c S |S N.moduler      )splithasattrr   isdigitgetattrint)modellayerr   ls       N/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/models/_prune.pyr   r      s    KKEFuh E!H$8$85(## aH(<(<abb	  61 	99;; ( ++AMMMM    c                    |                     d          }| }t          | d          r|d         dk    r| j        }d}|}|D ]Q}t          ||          r?|                                st	          ||          }n|t          |                   }|dz  }R|dz  }|d |         D ]<}|                                st	          ||          }'|t          |                   }=||         }t          |||           d S r   )r   r   r   r   r   r   setattr)r   r   valr   	lst_indexmodule2r   s          r   r	   r	      s   KKEFuh E!H$8$8IG  7A 	99;; *!'1--!#a&&/NINI:I: $ $yy{{ 	$VQ''FFCFF^FFiAFAsr   c                    d}i }|                     |          }|D ]]}|                     d          }|d         }|d         dd                              d          }|d         dk    rd |D             ||<   ^t          |           }|                                 D ]B\  }	}
t          | |	          }t	          |t
          j                  st	          |t                    rt	          |t                    rt          }nt
          j        }||	d	z            }|d         }|d         }d}|j        dk    r|}|} ||||j	        |j
        d u|j        |j        ||j        
          }t          ||	|           t	          |t                    r]t          ||	d	z            d         |j        |j        |j        d          }|j        |_        |j        |_        t          ||	|           Lt	          |t
          j                  rJt          j        ||	d	z            d         |j        |j        |j        d          }t          ||	|           t	          |t
          j                  rx||	d	z            d         }t-          ||j        |j
        d u          }t          ||	|           t1          |d          r(t3          |dd          |j        k    r||_        ||_        D|                                 |                                  |S )Nz***:r   r   , c                 ,    g | ]}t          |          S  )r   ).0is     r   
<listcomp>z+adapt_model_from_string.<locals>.<listcomp>?   s    555!s1vv555r   z.weight)in_channelsout_channelskernel_sizebiaspaddingdilationgroupsstrideT)epsmomentumaffinetrack_running_stats)num_featuresr2   r3   r4   r5   )in_featuresout_featuresr-   r6   head_hidden_size)r   r   named_modulesr   
isinstancer   Conv2dr   r0   r,   r-   r.   r/   r1   r	   r   r2   r3   r4   dropactBatchNorm2dr   r8   r   r   r6   r9   eval)parent_modulemodel_string	separator
state_dict	lst_shapekkeyshape
new_modulenm
old_moduleconvsr*   r+   gnew_convnew_bnr6   new_fcs                        r   r
   r
   6   sA   IJ""9--I 6 6GGCLLd!QrT
  %%8r>>55u555JsO-((J++-- (7 (71"=!44
j"),, &	7
:z0R0R &	7*j11 !!y1y=)AA$KQ4LA 1$$*t'lPZPf_D0*:LWaWj!24 4 4H j!X....
N33 	7#1y=)!,*.:K^!(dD D DF %/FK#FJj!V,,,,
BN33 	7^'I6q9z~XbXk!(dD D DF j!V,,,,
BI.. 		7%a)m4Q7L(z7NU_UdlpUpr r rFj!V,,,z>22 7:'91==AXXX2>J/*6
'OOr   c                     t          j        t          t          j                            d|dz                       }t          | |                    d                                                    S )N_prunedz.txtzutf-8)	pkgutilget_data__name__ospathjoinr
   decodestrip)rA   model_variant
adapt_datas      r   r   r   r   sT    !(BGLLMTZDZ,[,[\\J"=*2C2CG2L2L2R2R2T2TUUUr   )rX   rU   copyr   torchr   timm.layersr   r   r   __all__r   r	   r
   r   r&   r   r   <module>rc      s    				              : : : : : : : : : :
\
\
\  $  09 9 9xV V V V Vr   