o
    }oiL                     @   s8   d Z ddlZG dd dejjZG dd dejjZdS )z>The distribution modes to use for continuous image tokenizers.    Nc                       s$   e Zd Z fddZdd Z  ZS )IdentityDistributionc                    s   t    d S N)super__init__)self	__class__ r/home/ubuntu/.local/lib/python3.10/site-packages/nemo/collections/common/video_tokenizers/modules/distributions.pyr      s   zIdentityDistribution.__init__c                 C   s   |t dgt dgffS )Ng        )torchtensor)r   
parametersr	   r	   r
   forward   s   zIdentityDistribution.forward)__name__
__module____qualname__r   r   __classcell__r	   r	   r   r
   r      s    r   c                       s8   e Zd Zddedef fddZdd Zd	d
 Z  ZS )GaussianDistribution      >      4@
min_logvar
max_logvarc                    s   t    || _|| _d S r   )r   r   r   r   )r   r   r   r   r	   r
   r      s   

zGaussianDistribution.__init__c                 C   s    t d| }||t |  S )Ng      ?)r   exp
randn_like)r   meanlogvarstdr	   r	   r
   sample$   s   zGaussianDistribution.samplec                 C   s:   t j|ddd\}}t || j| j}| ||||ffS )N      )dim)r   chunkclampr   r   r   )r   r   r   r   r	   r	   r
   r   (   s   zGaussianDistribution.forward)r   r   )r   r   r   floatr   r   r   r   r	   r	   r   r
   r      s    r   )__doc__r   nnModuler   r   r	   r	   r	   r
   <module>   s   