o
    èp©i6  ã                   @   s   G d d„ dƒZ dS )c                   @   s8   e Zd Zdd„ Zddd„Zddd„Zdd	„ Zd
d„ ZdS )ÚLossTrackerc                 C   s6   d|vr	|  d¡ dd„ |D ƒ| _dd„ |D ƒ| _d S )NÚ
total_lossc                 S   ó   i | ]}|d “qS )é    © ©Ú.0Úkeyr   r   ú^/home/ubuntu/.local/lib/python3.10/site-packages/pytorch_metric_learning/utils/loss_tracker.pyÚ
<dictcomp>   ó    z(LossTracker.__init__.<locals>.<dictcomp>c                 S   r   )é   r   r   r   r   r	   r
      r   )ÚappendÚlossesÚloss_weights)ÚselfÚ
loss_namesr   r   r	   Ú__init__   s   
zLossTracker.__init__©r   c                 C   s8   | j  ¡ D ]\}}||vr| j |  | j| 9  < qd S ©N©r   Úitemsr   )r   Úexclude_lossÚkÚ_r   r   r	   Úweight_the_losses   s
   €þzLossTracker.weight_the_lossesc                 C   s<   d| j d< | j  ¡ D ]\}}||vr| j d  |7  < q
d S )Nr   r   )r   r   )r   r   r   Úvr   r   r	   Úget_total_loss   s   
€þzLossTracker.get_total_lossc                 C   s8   | j  ¡ D ]\}}||v r|| }nd}|| j|< qd S )Ng      ð?r   )r   Úloss_weight_dictr   r   Úwr   r   r	   Úset_loss_weights   s   
ûzLossTracker.set_loss_weightsc                 C   s   |   |¡ |  ¡  |  ¡  d S r   )r   r   r   )r   r   r   r   r	   Úupdate   s   
zLossTracker.updateN)r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r    r   r   r   r	   r      s    

r   N)r   r   r   r   r	   Ú<module>   r   