§
    �ÅjY  ã                   ó’   — d dl Z d dlmZ d dlmZmZ ddlmZmZm	Z	m
Z
 ddlmZmZ de
d	efd
„Z G d„ dee         ¦  «        ZddgZdS )é    N)Úoverride)ÚKeyConditionÚget_seq_lené   )ÚArchitectureÚImageModelDescriptorÚSizeRequirementsÚ	StateDicté   )ÚLRSpaceÚSeemoReÚ
state_dictÚreturnc                 ó  — d}|| v r=| |         j         d         }|dk    rdS |dk    rdS |dk    rdS t          d	|› �¦  «        ‚d
}|| v r5| |         j         d         }|dk    rdS |dk    rdS t          d|› �¦  «        ‚dS )Nz:body.0.local_block.block.moe_layer.experts.2.conv_1.weightr   é   Úlinearé   Údoubleé   ÚexpzUnknown low_dim_2: z:body.0.local_block.block.moe_layer.experts.1.conv_1.weightr   zUnknown low_dim_1: )ÚshapeÚ
ValueError)r   Úlow_dim_2_keyÚ	low_dim_2Úlow_dim_1_keyÚ	low_dim_1s        úXC:\Projects\Historical\venv\Lib\site-packages\spandrel/architectures/SeemoRe/__init__.pyÚ_get_lr_spacer      sÇ   € ð Q€MØ˜
Ð"Ð"Ø˜}Ô-Ô3°AÔ6ˆ	Ø˜Š>ˆ>Ø�8Ø˜!Š^ˆ^Ø�8Ø˜!Š^ˆ^Ø�5åÐ>°9Ð>Ð>Ñ?Ô?Ð?ð Q€MØ˜
Ð"Ð"Ø˜}Ô-Ô3°AÔ6ˆ	Ø˜Š>ˆ>Ø�8Ø˜!Š^ˆ^Ø�8åÐ>°9Ð>Ð>Ñ?Ô?Ð?ð ˆ8ó    c                   óL   ‡ — e Zd Zdˆ fd„Zededee         fd„¦   «         Zˆ xZ	S )ÚSeemoReArchr   Nc           !      ó¨   •— t          ¦   «                              dt          j        dddddddd	d
ddddddddddddddddddd¦  «        ¬¦  «         d S )Nr   úconv_1.weightzconv_1.biasznorm.weightz	norm.biaszconv_2.weightzconv_2.biasúupsampler.0.weightzupsampler.0.biasz body.0.local_block.norm_1.weightzbody.0.local_block.norm_1.biasz(body.0.local_block.block.conv_1.0.weightz(body.0.local_block.block.conv_1.2.weightz*body.0.local_block.block.agg_conv.0.weightz&body.0.local_block.block.conv.0.weightz&body.0.local_block.block.conv.1.weightz/body.0.local_block.block.conv_2.0.conv.0.weightz/body.0.local_block.block.conv_2.0.conv.1.weightz:body.0.local_block.block.moe_layer.experts.0.conv_1.weightz:body.0.local_block.block.moe_layer.experts.0.conv_2.weightz:body.0.local_block.block.moe_layer.experts.0.conv_3.weightz$body.0.local_block.block.proj.weightz body.0.local_block.norm_2.weightz"body.0.local_block.ffn.gate.weightz!body.0.global_block.norm_1.weightz%body.0.global_block.block.proj.weightú,body.0.global_block.block.attn.conv.0.weightz%body.0.global_block.ffn.fn_2.0.weightz#body.0.global_block.ffn.gate.weight)ÚidÚdetect)ÚsuperÚ__init__r   Úhas_all)ÚselfÚ	__class__s    €r   r)   zSeemoReArch.__init__6   s•   ø€ Ý‰Œ×ÒØÝÔ'ØØØØØØØ$Ø"Ø2Ø0Ø:Ø:Ø<Ø8Ø8ØAØAØLØLØLØ6Ø2Ø4Ø3Ø7Ø>Ø7Ø5ñ9ô ð 	ñ  	
ô  	
ð  	
ð  	
ð  	
r   r   c                 ór  — d}d}d}d}d}|d         j         d         }|d         j         d         }t          |d¦  «        }	t          |d	¦  «        }
t          |¦  «        }t          j        |d
         j         d         |z  ¦  «        }|d         j         d         }g }|	dk    r|dk    r
dg}d}d}d}n+|	dk    r|dk    r
dg}d}d}d}n|	dk    r|dk    r	dg}d}d}d}t          |||
|	|||||||¬¦  «        }t          ||| |dk    rdndg |¢|› d�‘|
› d�‘|	› d�‘dd|||t          d¬¦  «        ¬¦  «        S )Ng      ð?Té   r   r   r#   r   Úbodyz*body.0.local_block.block.moe_layer.expertsr$   r%   r   r   é$   ÚTinyr   é0   ÚBigé   ÚLargeF)ÚscaleÚin_chansÚnum_expertsÚ
num_layersÚembedding_dimÚ	img_rangeÚuse_shuffleÚglobal_kernel_sizeÚ	recursiveÚlr_spaceÚtopkÚRestorationÚSRÚdimÚneÚnl)Úminimum)	ÚarchitectureÚpurposeÚtagsÚsupports_halfÚsupports_bfloat16r6   Úinput_channelsÚoutput_channelsÚsize_requirements)r   r   r   ÚmathÚisqrtr   r   r	   )r+   r   r;   r<   r>   r?   r@   r7   r:   r9   r8   r6   r=   Ú
extra_tagsÚmodels                  r   ÚloadzSeemoReArch.loadY   s  € ð ˆ	Ø ˆàˆ	Ø$ˆØˆð ˜oÔ.Ô4°QÔ7ˆØ" ?Ô3Ô9¸!Ô<ˆÝ  ¨VÑ4Ô4ˆ
å!ØÐDñ
ô 
ˆõ ! Ñ,Ô,ˆå”
˜:Ð&:Ô;ÔAÀ!ÔDÈÑPÑQÔQˆà'Ø:ô
ä
�ôÐð ˆ
Ø˜Š?ˆ?˜}°Ò2Ð2Ø ˜ˆJØˆKØˆDØˆIˆIØ˜1Š_ˆ_ °"Ò!4Ð!4Ø˜ˆJØˆKØˆDØˆIˆIØ˜2ÒÐ -°2Ò"5Ð"5Ø!˜ˆJØˆKØˆDØˆIåØØØ#Ø!Ø'ØØ#Ø1ØØØð
ñ 
ô 
ˆõ $ØØØØ%*¨a¢Z Z�M�M°TðØðà Ð%Ð%Ð%ðð Ð"Ð"Ð"ðð Ð!Ð!Ð!ð	ð  Ø"ØØ#Ø$Ý.°rÐ:Ñ:Ô:ð!
ñ 
ô 
ð 	
r   )r   N)
Ú__name__Ú
__module__Ú__qualname__r)   r   r
   r   r   rS   Ú__classcell__)r,   s   @r   r!   r!   5   s|   ø€ € € € € ð!
ð !
ð !
ð !
ð !
ð !
ðF ðN
˜yð N
Ð-AÀ'Ô-Jð N
ð N
ð N
ñ „XðN
ð N
ð N
ð N
ð N
r   r!   r   )rO   Útyping_extensionsr   Úspandrel.utilr   r   Ú__helpers.model_descriptorr   r   r	   r
   Ú__arch.seemore_archr   r   r   r!   Ú__all__© r   r   ú<module>r^      sù   ðØ €€€à &Ð &Ð &Ð &Ð &Ð &à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð 2Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ð"˜ið "¨Gð "ð "ð "ð "ðJs
ð s
ð s
ð s
ð s
�,˜wÔ'ñ s
ô s
ð s
ðl ˜)Ð
$€€€r   