o
    9iW                     @   sl   d dl mZmZ d dlZG dd deZG dd deZG dd deZG d	d
 d
eZG dd deZdS )    )ABCabstractmethodNc                   @   s&   e Zd ZedejdejfddZdS )DiffusionLossWeightingsigmareturnc                 C   s   d S N selfr   r   r   U/data/cameron/vidgen/generative-models/sgm/modules/diffusionmodules/loss_weighting.py__call__   s   zDiffusionLossWeighting.__call__N)__name__
__module____qualname__r   torchTensorr   r   r   r   r   r      s    r   c                   @   "   e Zd ZdejdejfddZdS )UnitWeightingr   r   c                 C   s   t j||jdS )N)device)r   	ones_liker   r	   r   r   r   r      s   zUnitWeighting.__call__Nr   r   r   r   r   r   r   r   r   r   r          r   c                   @   s2   e Zd Zd
defddZdejdejfddZd	S )EDMWeighting      ?
sigma_datac                 C   s
   || _ d S r   r   )r
   r   r   r   r   __init__   s   
zEDMWeighting.__init__r   r   c                 C   s    |d | j d  || j  d  S )N   r   r	   r   r   r   r      s    zEDMWeighting.__call__N)r   )r   r   r   floatr   r   r   r   r   r   r   r   r      s    r   c                       s   e Zd Z fddZ  ZS )
VWeightingc                    s   t  jdd d S )Ng      ?r   )superr   )r
   	__class__r   r   r      s   zVWeighting.__init__)r   r   r   r   __classcell__r   r   r!   r   r      s    r   c                   @   r   )EpsWeightingr   r   c                 C   s   |d S )Ng       r   r	   r   r   r   r      s   zEpsWeighting.__call__Nr   r   r   r   r   r$      r   r$   )	abcr   r   r   r   r   r   r   r$   r   r   r   r   <module>   s    