Ë
    éÓ^j¶  ã                   ó�   — d Z ddlZddlmZ ddlmc mZ ddlmZ  ej                  e
«      Z G d„ dej                  «      Zd	d„Zy)
zY Test Time Pooling (Average-Max Pool)

Hacked together by / Copyright 2020 Ross Wightman
é    N)Únné   )Úadaptive_avgmax_pool2dc                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚTestTimePoolHeadc                 óJ  •— t         ‰| �  «        || _        || _        | j                  j	                  «       }t        |t        j                  «      r	|| _        �n.t        j                  | j                  j                  | j                  j                  dd¬«      | _        | j                  j                  j                  j                  |j                  j                  j                  | j                  j                  j                  «       «      «       | j                  j                   j                  j                  |j                   j                  j                  | j                  j                   j                  «       «      «       | j                  j#                  d«       y )Nr   T)Úkernel_sizeÚbiasr   )ÚsuperÚ__init__ÚbaseÚoriginal_poolÚget_classifierÚ
isinstancer   ÚConv2dÚfcÚnum_featuresÚnum_classesÚweightÚdataÚcopy_ÚviewÚsizer
   Úreset_classifier)Úselfr   r   Úbase_fcÚ	__class__s       €úe/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/test_time_pool.pyr   zTestTimePoolHead.__init__   s	  ø€ Ü‰ÑÔØˆŒ	Ø*ˆÔØ—)‘)×*Ñ*Ó,ˆÜ�gœrŸy™yÔ)ØˆDŽGä—i‘iØ—	‘	×&Ñ&¨¯	©	×(=Ñ(=È1ÐSWôYˆDŒGà�G‰G�N‰N×Ñ×%Ñ% g§n¡n×&9Ñ&9×&>Ñ&>¸t¿w¹w¿~¹~×?RÑ?RÓ?TÓ&UÔVØ�G‰G�L‰L×Ñ×#Ñ# G§L¡L×$5Ñ$5×$:Ñ$:¸4¿7¹7¿<¹<×;LÑ;LÓ;NÓ$OÔPØ�	‰	×"Ñ" 1Õ%ó    c                 óø   — | j                   j                  |«      }t        j                  || j                  d¬«      }| j                  |«      }t        |d«      }|j                  |j                  d«      d«      S )Nr   )r	   Ústrider   éÿÿÿÿ)	r   Úforward_featuresÚFÚ
avg_pool2dr   r   r   r   r   )r   Úxs     r   ÚforwardzTestTimePoolHead.forward   s`   € Ø�I‰I×&Ñ& qÓ)ˆÜ�L‰L˜¨×(:Ñ(:À1ÔEˆØ�G‰G�A‹JˆÜ" 1 aÓ(ˆØ�v‰v�a—f‘f˜Q“i Ó$Ð$r   )é   )Ú__name__Ú
__module__Ú__qualname__r   r'   Ú__classcell__)r   s   @r   r   r      s   ø„ õ&ö%r   r   c           
      ó‚  — d}t        | d«      r| j                  s| dfS |rd| j                  v r| j                  d   }n| j                  d   }|d   d   |d   kD  ra|d   d   |d   kD  rSt        j                  dt	        |d   dd  «      ›dt	        |dd  «      ›d	�«       t        | | j                  d
   ¬«      } d}| |fS )NFÚdefault_cfgÚtest_input_sizeÚ
input_sizer"   éþÿÿÿzTarget input size z > pretrained default z, using test time poolingÚ	pool_size)r   T)Úhasattrr.   Ú_loggerÚinfoÚstrr   )ÚmodelÚconfigÚuse_test_sizeÚtest_time_poolÚdf_input_sizes        r   Úapply_test_time_poolr<   '   sà   € Ø€NÜ�5˜-Ô(°×0AÒ0AØ�eˆ|ÐÙÐ*¨e×.?Ñ.?Ñ?Ø×)Ñ)Ð*;Ñ<‰à×)Ñ)¨,Ñ7ˆØˆlÑ˜BÑ -°Ñ"3Ò3¸¸|Ñ8LÈRÑ8PÐS`ÐacÑSdÒ8dÜ�ŠÜ˜& Ñ.¨r¨sÐ3Õ4´c¸-ÈÈÐ:LÕ6MðOô 	Pä  °e×6GÑ6GÈÑ6TÔUˆØˆØ�.Ð Ð r   )F)Ú__doc__ÚloggingÚtorchr   Útorch.nn.functionalÚ
functionalr$   Úadaptive_avgmax_poolr   Ú	getLoggerr)   r4   ÚModuler   r<   © r   r   ú<module>rF      sD   ðñó
 Ý ß Ð å 8ð ˆ'×
Ñ
˜HÓ
%€ô%�r—y‘yô %ô.!r   