o
    à¥µi  ã                   @   s&   d dl mZ d dlZG dd„ dƒZdS )é    )ÚOrderedDictNc                   @   sT   e Zd Zdd„ Zddd„Zddd„Zdd
ededdfdd„Zddeddfdd„Z	dS )Ú	LogBufferc                 C   s"   t ƒ | _t ƒ | _t ƒ | _d| _d S ©NF)r   Úval_historyÚ	n_historyÚoutputÚready©Úself© r   úX/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/trainers/utils/log_buffer.pyÚ__init__
   s   
zLogBuffer.__init__ÚreturnNc                 C   s    | j  ¡  | j ¡  |  ¡  d S ©N)r   Úclearr   Úclear_outputr	   r   r   r   r      s   

zLogBuffer.clearc                 C   s   | j  ¡  d| _d S r   )r   r   r   r	   r   r   r   r      s   

zLogBuffer.clear_outputé   ÚvarsÚcountc                 C   sb   t |tƒsJ ‚| ¡ D ]#\}}|| jvrg | j|< g | j|< | j|  |¡ | j|  |¡ qd S r   )Ú
isinstanceÚdictÚitemsr   r   Úappend)r
   r   r   ÚkeyÚvarr   r   r   Úupdate   s   


ûzLogBuffer.updater   Únc                 C   sx   |dksJ ‚| j D ]-}t | j | | d… ¡}t | j| | d… ¡}t || ¡t |¡ }|| j|< q	d| _dS )z&Average latest n values or all values.r   NT)r   ÚnpÚarrayr   Úsumr   r   )r
   r   r   ÚvaluesÚnumsÚavgr   r   r   Úaverage"   s   

zLogBuffer.average)r   N)r   )r   )
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Úintr   r#   r   r   r   r   r      s    

	r   )Úcollectionsr   Únumpyr   r   r   r   r   r   Ú<module>   s   