o
    W+ iN                     @   s   d dl mZ d dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ dd	lmZ dd
lmZmZ ejeejdG dd deZdS )    )DictN)accuracy_scoref1_score)Metrics)
OutputKeys)default_group)torch_nested_detachtorch_nested_numpify   )Metric)METRICS
MetricKeys)Z	group_keymodule_namec                       sZ   e Zd ZdZejf fdd	ZdedefddZdd	 Z	dddZ
dd Zdd Z  ZS )
LossMetriczhThe metric class to calculate average loss of batches.

    Args:
        loss_key: The key of loss
    c                    s"   t  j|i | || _g | _d S N)super__init__loss_keylosses)selfr   argskwargs	__class__ j/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/modelscope/metrics/loss_metric.pyr      s   
zLossMetric.__init__outputsinputsc                 C   s"   || j  }| jtt| d S r   )r   r   appendr	   r   )r   r   r   Zlossr   r   r   add   s   
zLossMetric.addc                 C   s   t jtt| jiS r   )r   LOSSfloatnpZaverager   r   r   r   r   evaluate#   s   zLossMetric.evaluateotherc                 C   s   | j |j  d S r   )r   extend)r   r%   r   r   r   merge&   s   zLossMetric.mergec                 C   s   | j S r   )r   r#   r   r   r   __getstate__)   s   zLossMetric.__getstate__c                 C   s   |    || _d S r   )r   r   )r   stater   r   r   __setstate__,   s   
zLossMetric.__setstate__)r%   r   )__name__
__module____qualname____doc__r   r    r   r   r   r$   r'   r(   r*   __classcell__r   r   r   r   r      s    
r   )typingr   numpyr"   Zsklearn.metricsr   r   Zmodelscope.metainfor   Zmodelscope.outputsr   Zmodelscope.utils.registryr   Zmodelscope.utils.tensor_utilsr   r	   baser   Zbuilderr   r   Zregister_moduleZloss_metricr   r   r   r   r   <module>   s   