o
    èp©ió  ã                   @   s    d dl Z G dd„ de jjƒZdS )é    Nc                       s4   e Zd Zd	‡ fdd„	Zd
dd„Z‡ fdd„Z‡  ZS )ÚBatchedDistanceNé    c                    s    t ƒ  ¡  || _|| _|| _d S ©N)ÚsuperÚ__init__ÚdistanceÚiter_fnÚ
batch_size)Úselfr   r   r	   ©Ú	__class__© úf/home/ubuntu/.local/lib/python3.10/site-packages/pytorch_metric_learning/distances/batched_distance.pyr      s   

zBatchedDistance.__init__c                 C   sb   |d ur|n|}|j d }td|| jƒD ]}|| j }|||… }|  ||¡}|  |||¡ qd S )Nr   )ÚshapeÚranger	   r   r   )r
   Ú	query_embÚref_embÚnÚsÚeÚLÚmatr   r   r   Úforward   s   

üzBatchedDistance.forwardc                    s.   zt ƒ  |¡W S  ty   t| j|ƒ Y S w r   )r   Ú__getattr__ÚAttributeErrorÚgetattrr   )r
   Únamer   r   r   r      s
   ÿzBatchedDistance.__getattr__)Nr   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   Ú__classcell__r   r   r   r   r      s    
	r   )ÚtorchÚnnÚModuler   r   r   r   r   Ú<module>   s    