o
    ߥi                     @   s,   d dl Z d dlmZ d	ddZd
ddZdS )    Nkaiming{Gz?c                    s    fdd}|S )Nc                    s  | j j}t| drl|ddks|ddkrldkr&tj| jjd  n-dkr5tjj	| jj d nd	krEtjj
| jjd
dd ndkrStjj| jj d t| drh| jd urjtj| jjd d S d S d S |ddkrtj| jjd  tj| jjd d S d S )NweightConvLinearnormalg        xavier)gainr   r   fan_in)amode
orthogonalbiasBatchNorm2dg      ?)	__class____name__hasattrfindnninitnormal_r   dataxavier_normal_kaiming_normal_orthogonal_r   	constant_)m	classnamer
   	init_type e/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/models/cv/skin_retouching/weights_init.py	init_func   s$   zweights_init.<locals>.init_funcr!   )r    r
   r#   r!   r   r"   weights_init   s   r$   Tc                 C   s   |rt j| S | S )N)r   utilsspectral_norm)moduler   r!   r!   r"   r&       s   r&   )r   r   )T)torchtorch.nnr   r$   r&   r!   r!   r!   r"   <module>   s   
