o
    pi                     @   s(   d dl Z ddlmZ G dd deZdS )    N   )BaseDistancec                       s,   e Zd Z fddZdd Zdd Z  ZS )SNRDistancec                    s    t  jdi | | jrJ d S )N )super__init__is_inverted)selfkwargs	__class__r   b/home/ubuntu/.local/lib/python3.10/site-packages/pytorch_metric_learning/distances/snr_distance.pyr      s   zSNRDistance.__init__c                 C   s8   t j|dd}|d| }t j|dd}||d S )Nr   dim   )torchvar	unsqueeze)r	   	query_embref_embanchor_variancespairwise_diffspairwise_variancesr   r   r   compute_mat   s   zSNRDistance.compute_matc                 C   s(   t j|dd}t j|| dd}|| S )Nr   r   )r   r   )r	   r   r   	query_varquery_ref_varr   r   r   pairwise_distance   s   zSNRDistance.pairwise_distance)__name__
__module____qualname__r   r   r   __classcell__r   r   r   r   r      s    r   )r   base_distancer   r   r   r   r   r   <module>   s    