o
    ´©i#  ã                   @   s*   d dl Z d dlmZ G dd„ dejƒZdS )é    Nc                       s0   e Zd Zd	dedef‡ fdd„Zdd„ Z‡  ZS )
ÚScalarQuantizationLayeré@   é	   Ú
latent_dimÚscalec                    sB   t ƒ  ¡  || _|| _|| _|| _t ||¡| _t ||¡| _	d S ©N)
ÚsuperÚ__init__Úin_dimÚout_dimr   r   ÚnnÚLinearÚin_projÚout_proj)Úselfr
   r   r   r   ©Ú	__class__© úc/home/ubuntu/.local/lib/python3.10/site-packages/voxcpm/modules/layers/scalar_quantization_layer.pyr	      s   
z ScalarQuantizationLayer.__init__c                 C   sb   |   |¡}t |¡}| jr!t || j ¡| j }|||  ¡  }nt || j ¡| j }|  |¡S r   )r   ÚtorchÚtanhÚtrainingÚroundr   Údetachr   )r   ÚhiddenÚ	quantizedr   r   r   Úforward   s   


zScalarQuantizationLayer.forward)r   r   )Ú__name__Ú
__module__Ú__qualname__Úintr	   r   Ú__classcell__r   r   r   r   r      s    
r   )r   Útorch.nnr   ÚModuler   r   r   r   r   Ú<module>   s    