Ë
    Dêñi»   ã                   óF  — d dl mZmZmZmZmZmZmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ej2                  Zi ej6                  e“ej8                  e“ej:                  e“ej<                  e“ej>                  e“ej@                  e“ejB                  e“ejD                  e“ejF                  e“ejH                  e“ejJ                  e“ejL                  e“ejN                  e“ejP                  e“ejR                  e“ejT                  e“ejV                  e“i ejX                  e“ejZ                  e“ej\                  e“ej^                  e“ej`                  e“ejb                  e“ejd                  e“ejf                  e“ejh                  e
“ejj                  e
“ejl                  e
“ejn                  e	“ejp                  e	“ejr                  e	“ejt                  e“ejv                  e“ejx                  e“¥ejz                  eej|                  eej~                  eej€                  eej‚                  eej„                  eej†                  eejˆ                  eejŠ                  eejŒ                  eejŽ                  ei¥ZHd	d„ZI	 	 	 	 d
dej”                  fd„ZKy)é    )Ú	count_gruÚcount_gru_cellÚ
count_lstmÚcount_lstm_cellÚ	count_rnnÚcount_rnn_cellÚtorch)Úcount_adap_avgpoolÚcount_avgpoolÚcount_convNdÚcount_convtNdÚcount_linearÚcount_normalizationÚcount_parametersÚcount_preluÚ
count_reluÚcount_softmaxÚcount_upsampleÚloggingÚnnÚzero_opsé   )ÚprRedNc                 óB  ‡‡‡‡‡— g Št        «       Š‰€i Š‰rdŠˆˆˆˆˆfd„}| j                  }| j                  «        | j                  |«       t	        j
                  «       5   | |Ž  ddd«       d}d}| j                  «       D ]:  }	t        |	j                  «       «      rŒ||	j                  z  }||	j                  z  }Œ< |j                  «       }|j                  «       }| j                  |«       ‰D ]  }
|
j                  «        Œ | j                  «       D ]r  \  }}	t        |	j                  «       «      rŒ d|	j                  v r|	j                  j!                  d«       d|	j                  v sŒX|	j                  j!                  d«       Œt ||fS # 1 sw Y   �Œ,xY w)z^Profiles a PyTorch model's operations and parameters, applying either custom or default hooks.NTc                 óN  •— t        | j                  «       «      ry t        | d«      st        | d«      rt        j                  d| ›d�«       | j                  dt        j                  dt        ¬«      «       | j                  dt        j                  dt        ¬«      «       | j                  «       D ]9  }| xj                  t        j                  |j                  «       g«      z  c_
        Œ; t        | «      }d }|‰v r(‰|   }|‰vrh‰	rft        d|j                  › d|› d	�«       nI|t         v r,t         |   }|‰vr4‰	r2t        d
|j                  › d|› d	�«       n|‰vr‰rt#        d|› d�«       |�"| j%                  |«      }‰j'                  |«       ‰j)                  |«       y )NÚ	total_opsÚtotal_paramsz9Either .total_ops or .total_params is already defined in z3. Be careful, it might change your code's behavior.r   ©Údtypeú[INFO] Customize rule ú() ú.ú[INFO] Register ú() for ú[WARN] Cannot find rule for ú(. Treat it as zero Macs and zero Params.)ÚlistÚchildrenÚhasattrr   ÚwarningÚregister_bufferr	   ÚzerosÚdefault_dtypeÚ
parametersr   ÚDoubleTensorÚnumelÚtypeÚprintÚ__qualname__Úregister_hooksr   Úregister_forward_hookÚappendÚadd)
ÚmÚpÚm_typeÚfnÚhandlerÚ
custom_opsÚhandler_collectionÚreport_missingÚtypes_collectionÚverboses
        €€€€€úN/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/thop/profile.pyÚ	add_hooksz!profile_origin.<locals>.add_hooks[   sˆ  ø€ Ü�—
‘
“ÔØä�1�kÔ"¤g¨a°Ô&@Ü�O‰OØKÈAÈ5ð QDð Dôð
 	
×Ñ˜+¤u§{¡{°1¼MÔ'JÔKØ	×Ñ˜.¬%¯+©+°a¼}Ô*MÔNà—‘“ò 	>ˆAØ�NŠNœe×0Ñ0°!·'±'³)°Ó=Ñ=ŽNð	>ô �a“ˆàˆØ�ZÑØ˜FÑ#ˆBØÐ-Ñ-±'ÜÐ.¨r¯©Ð.?¸sÀ6À(È!ÐLÕMØ”~Ñ%Ü Ñ'ˆBØÐ-Ñ-±'ÜÐ(¨¯©Ð(9¸ÀÀÈÐJÕKàÐ-Ñ-±.ÜÐ4°V°HÐ<dÐeÔfàˆ>Ø×-Ñ-¨bÓ1ˆGØ×%Ñ% gÔ.Ø×Ñ˜VÕ$ó    r   r   r   )ÚsetÚtrainingÚevalÚapplyr	   Úno_gradÚmodulesr'   r(   r   r   ÚitemÚtrainÚremoveÚnamed_modulesÚ_buffersÚpop)ÚmodelÚinputsr=   rA   r?   rC   rF   r   r   r8   r<   Únr>   r@   s     ```       @@rB   Úprofile_originrT   R   sy  ü€ àÐÜ“uÐØÐØˆ
ÙØˆ÷"%ð "%ðH �~‰~€Hà	‡J�J„LØ	‡K�K�	Ôä	�‰‹ñ Ùˆv‰÷ð €IØ€LØ�]‰]‹_ò 'ˆÜ�—
‘
“ÔØØ�Q—[‘[Ñ ˆ	Ø˜Ÿ™Ñ&‰ð	'ð —‘Ó €IØ×$Ñ$Ó&€Lð 
‡K�K�ÔØ%ò ˆØ�‰Õðð ×#Ñ#Ó%ò +‰ˆˆ1Ü�—
‘
“ÔØØ˜!Ÿ*™*Ñ$Ø�J‰J�N‰N˜;Ô'Ø˜QŸZ™ZÒ'Ø�J‰J�N‰N˜>Õ*ð+ð �lÐ"Ð"÷9ñ ús   Á$FÆFrQ   c                 óš  ‡‡‡‡‡‡— i Št        «       Š‰€i Š‰rdŠdt        j                  fˆˆˆˆˆfd„}| j                  }| j	                  «        | j                  |«       t        j                  «       5   | |Ž  ddd«       d
dt        j                  dt        t        ffˆˆfd„Š ‰| «      \  }}	}
| j                  |«       ‰j                  «       D ]^  \  }\  }}|j                  «        |j                  «        |j                  j                  d«       |j                  j                  d	«       Œ` |r||	|
fS ||	fS # 1 sw Y   ŒÆxY w)zdProfiles a PyTorch model, returning total operations, parameters, and optionally layer-wise details.NTr8   c                 óV  •— | j                  dt        j                  dt        j                  ¬«      «       | j                  dt        j                  dt        j                  ¬«      «       t	        | «      }d}|‰v r(‰|   }|‰vrh‰rft        d|j                  › d|› d�«       nI|t        v r,t        |   }|‰vr4‰r2t        d	|j                  › d
|› d�«       n|‰vr‰rt        d|› d�«       |�)| j                  |«      | j                  t        «      f‰| <   ‰j                  |«       y)zTRegisters hooks to a neural network module to track total operations and parameters.r   r   r   r   Nr    r!   r"   r#   r$   r%   r&   )r+   r	   r,   Úfloat64r1   r2   r3   r4   r   r5   r   r7   )r8   r:   r;   r=   r>   r?   r@   rA   s      €€€€€rB   rC   zprofile.<locals>.add_hooks´   s"  ø€ à	×Ñ˜+¤u§{¡{°1¼E¿M¹MÔ'JÔKØ	×Ñ˜.¬%¯+©+°a¼u¿}¹}Ô*MÔNô
 �a“ˆàˆØ�ZÑà˜FÑ#ˆBØÐ-Ñ-±'ÜÐ.¨r¯©Ð.?¸sÀ6À(È!ÐLÕMØ”~Ñ%Ü Ñ'ˆBØÐ-Ñ-±'ÜÐ(¨¯©Ð(9¸ÀÀÈÐJÕKàÐ-Ñ-±.ÜÐ4°V°HÐ<dÐeÔfàˆ>à×'Ñ'¨Ó+Ø×'Ñ'Ô(8Ó9ð%Ð˜qÑ!ð 	×Ñ˜VÕ$rD   ÚmoduleÚreturnc                 óº  •— | j                   j                  «       | j                  j                  «       }}i }| j                  «       D ]�  \  }}i }|‰v r_t	        |t
        j                  t
        j                  f«      s5|j                   j                  «       |j                  j                  «       }	}n ‰
||dz   ¬«      \  }}	}||	|f||<   ||z  }||	z  }Œ� |||fS )zfRecursively counts the total operations and parameters of the given PyTorch module and its submodules.ú	)Úprefix)r   rK   r   Únamed_childrenÚ
isinstancer   Ú
SequentialÚ
ModuleList)rX   r\   r   r   Úret_dictrS   r8   Ú	next_dictÚm_opsÚm_paramsÚ	dfs_countr>   s             €€rB   re   zprofile.<locals>.dfs_countÛ   sÞ   ø€ à"(×"2Ñ"2×"7Ñ"7Ó"9¸6×;NÑ;N×;SÑ;SÓ;U�<ˆ	ØˆØ×)Ñ)Ó+ò 	%‰DˆAˆqð
 ˆIØÐ&Ñ&¬z¸!¼b¿m¹mÌRÏ]É]Ð=[Ô/\Ø"#§+¡+×"2Ñ"2Ó"4°a·n±n×6IÑ6IÓ6K�x‘á-6°qÀÈ$ÁÔ-OÑ*��x Ø  (¨IÐ6ˆH�Q‰KØ˜ÑˆIØ˜HÑ$‰Lð	%ð ˜,¨Ð0Ð0rD   r   r   )r[   )rE   r   ÚModulerF   rG   rH   r	   rI   ÚintrL   ÚitemsrM   rO   rP   )rQ   rR   r=   rA   Úret_layer_infor?   rC   Úprev_training_statusr   r   ra   r8   Ú
op_handlerÚparams_handlerre   r>   r@   s     `` `        @@@rB   Úprofilerm   £   s6  ý€ ð ÐÜ“uÐØÐØˆ
Ùàˆð%”R—Y‘Y÷ %ñ %ð> !Ÿ>™>Ðà	‡J�J„LØ	‡K�K�	Ôä	�‰‹ñ Ùˆv‰÷ñ1œ"Ÿ)™)ð 1´c¼3°Zö 1ñ( )2°%Ó(8Ñ%€Iˆ|˜Xð 
‡K�KÐ$Ô%Ø+=×+CÑ+CÓ+Eò 'Ñ'ˆÑ'ˆJ˜Ø×ÑÔØ×ÑÔØ	�
‰
�‰�{Ô#Ø	�
‰
�‰�~Õ&ð	'ñ Ø˜,¨Ð0Ð0Ø�lÐ"Ð"÷Gð ús   Á6EÅE
)NTF)NTFF)LÚthop.rnn_hooksr   r   r   r   r   r   r	   Úthop.vision.basic_hooksr
   r   r   r   r   r   r   r   r   r   r   r   r   r   Úutilsr   rW   r-   Ú	ZeroPad2dÚConv1dÚConv2dÚConv3dÚConvTranspose1dÚConvTranspose2dÚConvTranspose3dÚBatchNorm1dÚBatchNorm2dÚBatchNorm3dÚ	LayerNormÚInstanceNorm1dÚInstanceNorm2dÚInstanceNorm3dÚPReLUÚSoftmaxÚReLUÚReLU6Ú	LeakyReLUÚ	MaxPool1dÚ	MaxPool2dÚ	MaxPool3dÚAdaptiveMaxPool1dÚAdaptiveMaxPool2dÚAdaptiveMaxPool3dÚ	AvgPool1dÚ	AvgPool2dÚ	AvgPool3dÚAdaptiveAvgPool1dÚAdaptiveAvgPool2dÚAdaptiveAvgPool3dÚLinearÚDropoutÚUpsampleÚUpsamplingBilinear2dÚUpsamplingNearest2dÚRNNCellÚGRUCellÚLSTMCellÚRNNÚGRUÚLSTMr_   ÚPixelShuffleÚSyncBatchNormr4   rT   rf   rm   © rD   rB   ú<module>rž      s  ð÷÷ ñ ÷÷ ÷ ÷ õ" à—‘€ð.Ø‡L�L�(ð.à‡I�Iˆ|ð.ð ‡I�Iˆ|ð.ð ‡I�Iˆ|ð	.ð
 ×Ñ˜ð.ð ×Ñ˜ð.ð ×Ñ˜ð.ð ‡N�NÐ'ð.ð ‡N�NÐ'ð.ð ‡N�NÐ'ð.ð ‡L�LÐ%ð.ð ×ÑÐ*ð.ð ×ÑÐ*ð.ð ×ÑÐ*ð.ð ‡H�Hˆkð.ð  ‡J�J�ð!.ð" ‡G�GˆXñ#.ð$ ‡H�Hˆhð%.ð& ‡L�L�*ð'.ð( ‡L�L�(ð).ð* ‡L�L�(ð+.ð, ‡L�L�(ð-.ð. ×Ñ˜(ð/.ð0 ×Ñ˜(ð1.ð2 ×Ñ˜(ð3.ð4 ‡L�L�-ð5.ð6 ‡L�L�-ð7.ð8 ‡L�L�-ð9.ð: ×ÑÐ,ð;.ð< ×ÑÐ,ð=.ð> ×ÑÐ,ð?.ð@ ‡I�Iˆ|ðA.ðB ‡J�J�ðC.ðD ‡K�K�ñE.ðF ×Ñ˜^Ø×Ñ˜NØ‡J�J�Ø‡J�J�Ø‡K�K�Ø‡F�FˆIØ‡F�FˆIØ‡G�GˆZØ‡M�M�8Ø‡O�O�XØ×ÑÐ)ñ[.€óbN#ðh ØØØñX#Ø�9‰9ôX#rD   