
    kh                     `    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y)
    N)deepcopy)nn)
Conv2dSameBatchNormAct2dLinear)extract_layer	set_layeradapt_model_from_stringadapt_model_from_filec                 "   |j                  d      }| }t        | d      r|d   dk7  r| j                  }t        | d      s|d   dk(  r|dd  }|D ]=  }t        ||      r,|j                         st	        ||      },|t        |         };|c S  |S N.moduler      )splithasattrr   isdigitgetattrint)modellayerr   ls       N/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/models/_prune.pyr   r      s    KKEFuhE!H$85(#aH(<ab	 6199; +AM M    c                    |j                  d      }| }t        | d      r|d   dk7  r| j                  }d}|}|D ]?  }t        ||      s|j                         st	        ||      }n|t        |         }|dz  }A |dz  }|d | D ]-  }|j                         st	        ||      } |t        |         }/ ||   }t        |||       y 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IG 7A99;!'1-!#a&/NI NI:I $yy{VQ'FCF^F	$
 	iAFAsr   c                    d}i }|j                  |      }|D ]T  }|j                  d      }|d   }|d   dd j                  d      }|d   dk7  s9|D cg c]  }t        |       c}||<   V t        |       }	| j                         D ]L  \  }
}t	        | |
      }t        |t        j                        st        |t              rt        |t              rt        }nt        j                  }||
dz      }|d   }|d   }d}|j                  dkD  r|}|} ||||j                  |j                  d u|j                  |j                  ||j                  	      }t        |	|
|       t        |t               rht!        ||
dz      d   |j"                  |j$                  |j&                  d
      }|j(                  |_        |j*                  |_        t        |	|
|       Ut        |t        j,                        rPt        j,                  ||
dz      d   |j"                  |j$                  |j&                  d
      }t        |	|
|       t        |t        j.                        s||
dz      d   }t/        ||j0                  |j                  d u      }t        |	|
|       t3        |	d      s%t5        |	dd      |	j6                  k(  r||	_        ||	_        O |	j;                          | j;                          |	S c c}w )Nz***:r   r   , z.weight)in_channelsout_channelskernel_sizebiaspaddingdilationgroupsstrideT)epsmomentumaffinetrack_running_stats)num_featuresr-   r.   r/   r0   )in_featuresout_featuresr(   r1   head_hidden_size)r   r   r   named_modulesr   
isinstancer   Conv2dr   r+   r'   r(   r)   r*   r,   r	   r   r-   r.   r/   dropactBatchNorm2dr   r3   r   r   r1   r4   eval)parent_modulemodel_string	separator
state_dict	lst_shapekkeyshapei
new_modulenm
old_moduleconvsr%   r&   gnew_convnew_bnr1   new_fcs                         r   r
   r
   6   s   IJ""9-I 6GGCLd!Qr
  %8r>/45!s1v5JsO6 -(J++- (71"=!4
j")),
:z0R*j1!yy1y=)AA$KQ4LA  1$*'lPZPfPf__D0*:L:LWaWjWj!2!24H j!X.
N3#1y=)!,*..:K^K^!((dDF %//FK#FJj!V,
BNN3^^'I6q9z~~XbXkXk!((dDF j!V,
BII.%a)m4Q7L(z7N7NU_UdUdlpUprFj!V,z>2:'91=AXAXX2>J/*6
'Q(7T OOa 6s   K<c                     t        j                  t        t        j                  j                  d|dz               }t        | |j                  d      j                               S )N_prunedz.txtzutf-8)	pkgutilget_data__name__ospathjoinr
   decodestrip)r<   model_variant
adapt_datas      r   r   r   r   sJ    !!(BGGLLMTZDZ,[\J"=*2C2CG2L2R2R2TUUr   )rT   rQ   copyr   torchr   timm.layersr   r   r   __all__r   r	   r
   r    r   r   <module>r`      s2    	    : :
\$09xVr   