§ …ðÔi+ãó —ddlZddlmZmZmZddlZddlmcmZ ddlmZddl m Z ddl m Z eeeeeffZ ddlmZn #e$rdZYnwxYwGd„d ej¦«ZGd „d ej¦«ZGd „d ej¦«ZdS)éN)ÚUnionÚTupleÚOptional)Únn)Ú rearrangeé)ÚClsToken)Úindirect_grid_samplecór‡—eZdZ d+dededed ed ed ed eed edededeedeedefˆfd„ Zde j de j fd„Z e d„¦«Z e d„¦«Ze d„¦«Ze d„¦«Ze d„¦«Zd„Zde j dejfd„Zd e j d!e j fd"„Zde j de j fd#„Z d,d$e j d%ee j d&eeeefde j fd'„Z d,d(ed%ee j d&eeeefde j fd)„Zd(edeeeffd*„ZˆxZS)-ÚViTPatchGeneratorTFNçrÚ patch_sizeÚ embed_dimÚ input_dimsÚabs_posÚnormalize_patchesÚ cls_tokenÚmax_input_dimsÚ pos_dropoutÚreturn_pos_encÚnum_cls_tokensÚregister_multipleÚ num_registersÚ patch_biascót•‡—t¦« ¦«t|t¦«r||f}|€|}t|t¦«r||f}t ˆfd„|D¦«¦«}||k|_||_| |_t||¬¦«}‰|_ ||_ ||_ |d‰z|_ |d‰z|_ t ˆfd„|D¦«¦«|_|j |j z|_||_t#‰¦«|_t'‰|fd| i|¤Ž|_|r8|dz}t+jt/jd|j|fi|¤Ž|z¦«|_t5|| || | ¬¦«|_|rt+j|¦«nt+j¦«|_dS) Nc3óf•K—|]+}ttj|‰z ¦«‰z¦«V—Œ,dS©N)ÚintÚmathÚceil©Ú.0Údrs €ú@/home/zhangtao/hf_model/vectorllm_hf_0407/vit_patch_generator.pyú z-ViTPatchGenerator.__init__..6sRøèè€ð ð àõ •” ˜!˜j™.Ñ)Ô)¨JÑ6Ñ 7Ô 7ð ð ð ð ð ð ó)ÚdeviceÚdtyperrc3ó"•K—|] }|‰zV—Œ dSr©r!s €r$r%z-ViTPatchGenerator.__init__..Gs'øèè€ÐDÐD°A  Z¡ÐDÐDÐDÐDÐDÐDr&Úbiasgà¿)Ú num_tokensÚenabledrr)ÚsuperÚ__init__Ú isinstancerÚtupleÚcpe_moderrÚdictrrrÚnum_rowsÚnum_colsrÚ num_patchesrÚ Im2PatchesÚ im_to_patchesÚViTPatchLinearÚembedderrÚ ParameterÚtorchÚrandnÚ pos_embedr rÚ LayerNormÚIdentityÚpatch_normalizer)Úselfrrrrrrrrrrrrrr'r(ÚfactoryÚscaleÚ __class__s ` €r$r/zViTPatchGenerator.__init__sÿøø€õ ‰Œ×ÒÑÔÐå �j¥#Ñ &Ô &ð 2Ø$ jÐ1ˆJà Ð !Ø'ˆNÝ �n¥cÑ *Ô *ð >Ø,¨nÐ=ˆNåð ð ð ð à#ð ñ ô ñ ô ˆð '¨*Ò4ˆŒ Ø&ˆÔØ,ˆÔå˜f¨EÐ2Ñ2Ô2ˆà$ˆŒØˆŒ Ø"ˆŒà& qÔ)¨ZÑ7ˆŒ Ø& qÔ)¨ZÑ7ˆŒ ÝÐDÐDÐDÐD¸ÐDÑDÔDÑDÔDˆŒØœ=¨4¬=Ñ8ˆÔØ,ˆÔå'¨ Ñ3Ô3ˆÔÝ& z°9ÐYÐYÀ:ÐYÐQXÐYÐYˆŒ à ð jØ Ñ%ˆEÝœ\­%¬+°a¸Ô9IÈ9Ð*`Ð*`ÐX_Ð*`Ð*`ÐchÑ*hÑiÔiˆDŒNå!Ø Ø%ØØ/Ø'ð  ñ ô ˆŒðr*rRs r$Úno_weight_decayz!ViTPatchGenerator.no_weight_decayys€à ð ð r&Ú src_embedÚ targ_embedcó~—|j|jkr’ttj|jd¦«¦«}|dz|jdks Jd¦«‚t |d||¬¦«}t j||j|jfddd¬ ¦«}t |d ¦«}|j   |¦«dS) NrrIz*Unable to interpolate non-square embeddingzb (h w) c -> b c h w)ÚhÚwÚbicubicTF©ÚsizeÚmodeÚ align_cornersÚ antialiaszb c h w -> b (h w) c) rMrrÚsqrtrÚFÚ interpolater4r5ÚdataÚcopy_)rBr\r]Úsrc_sizes r$Ú _load_embedzViTPatchGenerator._load_embed~sÌ€Ø Œ?˜jÔ.Ò .Ð .Ý�4œ9 Y¤_°QÔ%7Ñ8Ô8Ñ9Ô9ˆHà˜q‘= I¤O°AÔ$6Ò6Ð6Ð6Ð8dÑ6Ô6Ð6å! )Ð-CÀxÐS[Ð\Ñ\Ô\ˆIÝœ  i°t´}ÀdÄmÐ6TÐ[dÐtxðEJðKñKôKˆIÝ! )Ð-CÑDÔDˆIØŒ×Ò˜iÑ(Ô(Ð(Ð(Ð(r&Úsrc_proj_weightÚtarg_proj_weightcóŒ—|j|jkr™ttj|jddz¦«¦«}|dzdz|jdks Jd¦«‚t |dd||¬¦«}t j||j|jfddd ¬ ¦«}t |d ¦«}|j  |¦«dS) NrérIz+Unable to interpolate non-square patch sizezb (c h w) -> b c h w)Úcr_r`raTFrbzb c h w -> b (c h w)) rMrrrgrrhrirrjrk)rBrnroÚsrc_patch_sizes r$Ú_load_projectionz"ViTPatchGenerator._load_projection‰sæ€Ø Ô Ð$4Ô$:Ò :Ð :Ý ¥¤¨?Ô+@ÀÔ+CÀqÑ+HÑ!IÔ!IÑJÔJˆNà" aÑ'¨1Ñ,°Ô0EÀaÔ0HÒHÐHÐHÐJwÑHÔHÐHå'¨Ð9OÐSTÐXfÐjxÐyÑyÔyˆOÝœm¨OÀ4Ä?ÐTXÔTcÐBdÐktðEIðUZð[ñ[ô[ˆOÝ'¨Ð9OÑPÔPˆOØÔ×#Ò# OÑ4Ô4Ð4Ð4Ð4r&cóæ—| |¦«}|j tj¦«|_| | tj¦«¦«}|Sr)r8r:Útor<Úbfloat16)rBrFrNs r$rKzViTPatchGenerator.embed_patches”sR€Ø×$Ò$ QÑ'Ô'ˆØœ ×(Ò(­¬Ñ8Ô8ˆŒ Ø—-’- § ¢ ­5¬>Ñ :Ô :Ñ;Ô;ˆØˆr&rNÚ patch_idxsrJcó*—|js|S| |jd||¦«}|jrY|jdkrNt j|jddd|j|j¬¦«|jk}t j ||d¦«}n|}||z|fS)Nrr)r(r') rÚ get_pos_encrMÚtrainingrr<Úrandr(r'Úwhere)rBrNrxrJrOÚkeepsÚ pos_enc_drops r$rLzViTPatchGenerator.apply_pos_encšs¢€ð Œ|ð ØˆNà×"Ò" 7¤=°Ô#3°ZÀÑLÔLˆà Œ=ð #˜TÔ-°Ò1Ð1Ý”J˜wœ}¨QÔ/°°A¸W¼]ÐSZÔSaÐbÑbÔbÐeiÔeuÒuˆEÝ œ; u¨g°qÑ9Ô9ˆLˆLà"ˆLà˜Ñ% wÐ.Ð.r&Ú batch_sizecó^‡—|€‰j}ntˆfd„|D¦«¦«}‰ ||¦«}|€|S| d¦« dd|jd¦«}t j| |jddd¦«d|¬¦«}|S)Nc3ó,•K—|]}|‰jzV—ŒdSr)r)r"r#rBs €r$r%z0ViTPatchGenerator.get_pos_enc..´s*øèè€ÐHÐH¸˜q D¤OÑ3ÐHÐHÐHÐHÐHÐHr&éÿÿÿÿrr)ÚdimÚindex)rr1Ú_get_pos_embeddingsÚ unsqueezeÚexpandrMr<Úgather)rBr€rxrJrr>Úexp_patch_idxss` r$rzzViTPatchGenerator.get_pos_enc¬s¼ø€ð Ð ØœˆJˆJåÐHÐHÐHÐH¸ZÐHÑHÔHÑHÔHˆJà×,Ò,¨Z¸ÑDÔDˆ à Ð ØÐ à#×-Ò-¨bÑ1Ô1×8Ò8¸¸RÀÄÐQSÔATÑUÔUˆå”L ×!1Ò!1°*Ô2BÀ1Ô2EÀrÈ2Ñ!NÔ!NÐTUÐ]kÐlÑlÔlˆ ØÐr&cóÚ‡—|j|jf‰kr|jS|j d|j|jd¦« dddd¦«}ˆfd„}|j�r||j�rtjd¦«}tj |dd|j ¬¦«d|z z|z}tj d ¦«}| }tj tj |dd|j ¬¦«||z z|z¦«} || z} |d| z z} tj| | gd¬ ¦« dd¦«} tj |ddd|j ¬¦«d| z z} tjdd‰d|j ¬ ¦«d  |‰dd¦«}tjdd‰d|j ¬ ¦«ddd…df |d‰d¦«}tj||gd¬ ¦«}|| z| z}| d¦« d¦«t)j| ¦« |ddd¦«|d dd¬¦« |j¦«}njt3‰¦«}t)j| ¦«||fdd ¬¦« |j¦«}||¦«}n ||¦«}|jdd…‰krBt)j| ¦«‰dd ¬¦« |j¦«}| d¦« ddd¦«}|S)NrrƒrrqrIc󸕗‰d|jdkr|dd‰d…dd…f}‰d|jdkr|ddd…d‰d…f}|S)Nréþÿÿÿ.rrƒ)rM)r>rs €r$Ú window_selectz.window_selectÇsoø€Ø˜!Œ}˜yœ¨rÔ2Ò2Ð2Ø% c¨>¨J°q¬M¨>¸1¸1¸1Ð&<Ô=� ؘ!Œ}˜yœ¨rÔ2Ò2Ð2Ø% c¨1¨1¨1¨n¨z¸!¬}¨nÐ&<Ô=� ØÐ r&gš™™™™™¹?)r'gè?)r„)Ústepsr'©NNÚbilinearÚzerosT)ÚgridrdÚ padding_modere)rcrerdr�)r4r5r>ÚreshapeÚpermuter2r{rrgr<r|r'ÚlogÚexpÚstackÚclamp_ÚlinspacerˆÚmul_Úsub_rhÚ grid_sampleÚfloatrvr(ÚmaxrirMÚflatten)rBr€rr>rŽÚ min_scalerDÚ aspect_minÚ aspect_maxÚaspectÚscale_xÚscale_yÚscale_xyÚpos_xyÚlin_xÚlin_yÚlin_xyÚgrid_xyÚmax_dims ` r$r†z%ViTPatchGenerator._get_pos_embeddingsÁsÎø€Ø ŒM˜4œ=Ð )¨ZÒ 7Ð 7Ø”>Ð !à”N×*Ò*¨1¨d¬m¸T¼]ÈBÑOÔO×WÒWÐXYÐ[\Ð^_ÐabÑcÔcˆ ð ð ð ð ð ð Œ=ñ, 1ØŒ}ñ) 5Ý œI c™NœN� Ýœ  :¨q°!¸IÔ`ð>`Ø ð>`àð>`ð)ð>`ðð >`ð %)ð >`ð !ð >`ð"*¨+Ô!6ð>`ð$ð>`ð"&ð>`ð"%ð>`ð%-¨S¤Mð>`ð!)¨¤ ð>`ð"ð>`ð>`ð>`ð>`ð>`ð>`ð@˜œð¨%¬,ðððððð&ð&ñ„Xð&ðð)ð)ñ„Xð)ðð*ð*ñ„Xð*ðð,ð,ñ„Xð,ðð8ð8ñ„Xð8ð ð ð ð ) U¤\ð )¸r¼|ð )ð )ð )ð )ð 5°´ ð 5ÐPUÔP\ð 5ð 5ð 5ð 5ð˜uœ|ð°´ ððððð<@Ø>Bð/ð/Ø$œ|ð/à"*¨5¬<Ô"8ð/ð#+¨5°°c°¬?Ô";ð/ð Œð /ð/ð/ð/ð(:>Ø<@ððØ #ðà (¨¬Ô 6ðð!)¨¨s°C¨x¬Ô 9ðð Œð ðððð*@¨cð@¸uÀSÈ#ÀX¼ð@ð@ð@ð@ð@ð@ð@ð@r&r cóH‡—eZdZdefˆfd„ Zdejdejfd„ZˆxZS)r7rcóV•—t¦« ¦«||_dSr©r.r/r)rBrrEs €r$r/zIm2Patches.__init__s$ø€Ý ‰Œ×ÒÑÔÐØ$ˆŒˆˆr&rFrGcó —|jdkr.| d¦«}| ddd¦«}|S|jd|jz}|jd|jz}t |d||j||j¬¦«}|S)NrrIrr�rƒz*b c (py yy) (px xx) -> b (py px) (c yy xx))ÚpyÚyyÚpxÚxx)rr¡r–rMr)rBrFrNr¼r¾s r$rPzIm2Patches.forward sŠ€Ø Œ?˜aÒ Ð Ø—i’i ‘l”lˆGØ—o’o a¨¨AÑ.Ô.ˆG؈Nà ŒW�RŒ[˜DœOÑ +ˆØ ŒW�RŒ[˜DœOÑ +ˆÝ˜AÐKØ! d¤oØ! d¤oð ñ ô ˆðˆr&) r¯r°r±rr/r<r´rPr¶r·s@r$r7r7sjø€€€€€ð% 3ð%ð%ð%ð%ð%ð%𠘜ð ¨%¬,ð ð ð ð ð ð ð ð r&r7có.‡—eZdZddededefˆfd„ ZˆxZS)r9Frrr+c ó\•—t¦«jd|dzz|fd|i|¤Ž||_dS)NrqrIr+rº)rBrrr+rCrEs €r$r/zViTPatchLinear.__init__sSø€Ø�‰ŒÔØ �˜q‘Ñ !Ø ð ð ðð ðð  ð ð ð %ˆŒˆˆr&)F)r¯r°r±rr³r/r¶r·s@r$r9r9sWø€€€€€ð%ð% 3ð%°3ð%¸dð%ð%ð%ð%ð%ð%ð%ð%ð%ð%r&r9)rÚtypingrrrr<Útorch.nn.functionalrÚ functionalrhÚeinopsrrr rr²r Ú ImportErrorÚModuler r7ÚLinearr9r*r&r$úrÉswðð € € € Ø)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)à € € € ØÐÐÐÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐàÐÐÐÐÐà�C˜˜s C˜xœÐ(Ô)€ ð à9Ð9Ð9Ð9Ð9Ð9Ð9øØð ð ð ØÐÐÐð øøøðfðfðfðfðf˜œ ñfôfðfðRðððð�”ñôðð(%ð%ð%ð%ð%�R”Yñ%ô%ð%ð%ð%sÁAÁAÁA