o
    9iM                     @   sr   d dl mZmZ d dlmZ d dlZG dd deZG dd dZG dd	 d	ZG d
d dZ	G dd deZ
dS )    )ABCabstractmethod)TupleNc                	   @   s8   e Zd Zedejdeejejejejf fddZdS )DenoiserScalingsigmareturnc                 C   s   d S N )selfr   r	   r	   W/data/cameron/vidgen/generative-models/sgm/modules/diffusionmodules/denoiser_scaling.py__call__   s   zDenoiserScaling.__call__N)__name__
__module____qualname__r   torchTensorr   r   r	   r	   r	   r   r      s    r   c                   @   sD   e Zd Zd
defddZdejdeejejejejf fddZd	S )
EDMScaling      ?
sigma_datac                 C   s
   || _ d S r   )r   )r
   r   r	   r	   r   __init__   s   
zEDMScaling.__init__r   r   c                 C   sn   | j d |d | j d   }|| j  |d | j d  d  }d|d | j d  d  }d|  }||||fS )N   r            ?)r   logr
   r   c_skipc_outc_inc_noiser	   r	   r   r      s
    zEDMScaling.__call__N)r   )	r   r   r   floatr   r   r   r   r   r	   r	   r	   r   r      s    r   c                   @   4   e Zd Zdejdeejejejejf fddZdS )
EpsScalingr   r   c                 C   s>   t j||jd}| }d|d d d  }| }||||fS )N)devicer   r         ?r   )r   	ones_liker"   cloner   r	   r	   r   r      s
   zEpsScaling.__call__Nr   r   r   r   r   r   r   r	   r	   r	   r   r!          r!   c                   @   r    )VScalingr   r   c                 C   sN   d|d d  }| |d d d  }d|d d d  }|  }||||fS )Nr#   r   r   )r%   r   r	   r	   r   r   )   s
   zVScaling.__call__Nr&   r	   r	   r	   r   r(   (   r'   r(   c                   @   r    )VScalingWithEDMcNoiser   r   c                 C   sR   d|d d  }| |d d d  }d|d d d  }d|   }||||fS )Nr#   r   r   r   )r   r   r	   r	   r   r   4   s
   zVScalingWithEDMcNoise.__call__Nr&   r	   r	   r	   r   r)   3   r'   r)   )abcr   r   typingr   r   r   r   r!   r(   r)   r	   r	   r	   r   <module>   s    