o
    €o™ie  ã                   @   s*   d dl mZ d dlmZ G dd„ dƒZdS )é    )ÚUnion)ÚTensorc                   @   s”   e Zd ZU dZeeeef ed< eeef ed< eeef ed< e	ed< ddd	„Z
dd
d„Zddeeeef de	ddfdd„Zedefdd„ƒZdS )ÚAverageMetera"  Computes and stores the average and current value.

    Example:
        >>> stats = AverageMeter()
        >>> acc1 = torch.tensor(0.99) # coming from K.metrics.accuracy
        >>> stats.update(acc1, n=1)  # where n is batch size usually
        >>> round(stats.avg, 2)
        0.99

    ÚvalÚ_avgÚsumÚcountÚreturnNc                 C   s   |   ¡  d S ©N)Úreset©Úself© r   úP/home/ubuntu/.local/lib/python3.10/site-packages/kornia/metrics/average_meter.pyÚ__init__(   s   zAverageMeter.__init__c                 C   s   d| _ d| _d| _d| _d S )Nr   )r   r   r   r   r   r   r   r   r   +   s   
zAverageMeter.reseté   Únc                 C   s8   || _ |  j|| 7  _|  j|7  _| j| j | _d S r
   )r   r   r   r   )r   r   r   r   r   r   Úupdate1   s   zAverageMeter.updatec                 C   s    t | jtƒrt| j ¡ ƒS | jS r
   )Ú
isinstancer   r   ÚfloatÚitemr   r   r   r   Úavg7   s   zAverageMeter.avg)r	   N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úboolr   Ú__annotations__Úintr   r   r   Úpropertyr   r   r   r   r   r      s   
 

"r   N)Útypingr   Úkornia.corer   r   r   r   r   r   Ú<module>   s   