o
    e                     @   sL   d dl Z d dlZd dlZddgZG dd deZdd ZG dd deZdS )    NTrainingStatsTimec                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	SmoothedValuezsTrack a series of values and provide access to smoothed values over a
    window or the global series average.
    c                 C   s   t j|d| _d S )N)maxlen)collectionsdeque)selfwindow_size r
   KD:\Projects\ConvertPro\env\Lib\site-packages\paddleocr/ppocr/utils/stats.py__init__   s   zSmoothedValue.__init__c                 C   s   | j | d S N)r   append)r   valuer
   r
   r   	add_value      zSmoothedValue.add_valuec                 C   s   t | jS r   )npZmedianr   )r   r
   r
   r   get_median_value!   s   zSmoothedValue.get_median_valueN)__name__
__module____qualname____doc__r   r   r   r
   r
   r
   r   r      s
    r   c                   C   s   t j  dS )Nz%Y-%m-%d %H:%M:%S.%f)datetimenowstrftimer
   r
   r
   r   r   %   r   c                   @   s0   e Zd Zdd Zdd Zd
ddZd
dd	ZdS )r   c                    s    | _  fdd|D | _d S )Nc                    s   i | ]}|t  qS r
   )r   ).0keyr	   r
   r   
<dictcomp>,   s    z*TrainingStats.__init__.<locals>.<dictcomp>)r	   smoothed_losses_and_metrics)r   r	   Z
stats_keysr
   r   r   r   *   s   
zTrainingStats.__init__c                 C   s@   |  D ]\}}|| jvrt| j| j|< | j| | qd S r   )itemsr   r   r	   r   )r   statskvr
   r
   r   update1   s   

zTrainingStats.updateNc                 C   sP   t  }|r| D ]\}}|||< q
| j D ]\}}t| d||< q|S )N   )r   OrderedDictr    r   roundr   )r   extrasr!   r"   r#   r
   r
   r   get8   s   
zTrainingStats.getc                 C   s@   |  |}g }| D ]\}}|d|| qd|}|S )Nz{}: {:x<6f}z, )r)   r    r   formatjoin)r   r(   dstrsr"   r#   r
   r
   r   logB   s   

zTrainingStats.logr   )r   r   r   r   r$   r)   r.   r
   r
   r
   r   r   )   s
    

)	r   numpyr   r   __all__objectr   r   r   r
   r
   r
   r   <module>   s   