o
    9im                     @   sn   d dl mZ d dlmZmZ d dlZd dlmZ d dlm  m	Z
 ddlmZ ddlmZ G dd	 d	eZdS )
    )abstractmethod)AnyTupleN   )DiagonalGaussianDistribution   )AbstractRegularizerc                       sP   e Zd Zddef fddZdefddZdejde	eje
f fd	d
Z  ZS )DiagonalGaussianRegularizerTsamplec                    s   t    || _d S )N)super__init__r
   )selfr
   	__class__ X/data/cameron/vidgen/generative-models/sgm/modules/autoencoding/regularizers/__init__.pyr      s   

z$DiagonalGaussianRegularizer.__init__returnc                 c   s    dE d H  d S )Nr   r   )r   r   r   r   get_trainable_parameters   s   z4DiagonalGaussianRegularizer.get_trainable_parameterszc                 C   sR   t  }t|}| jr| }n| }| }t||jd  }||d< ||fS )Nr   kl_loss)dictr   r
   modekltorchsumshape)r   r   log	posteriorr   r   r   r   forward   s   
z#DiagonalGaussianRegularizer.forward)T)__name__
__module____qualname__boolr   r   r   r   Tensorr   r   r   __classcell__r   r   r   r   r	      s    &r	   )abcr   typingr   r   r   torch.nnnntorch.nn.functional
functionalF#modules.distributions.distributionsr   baser   r	   r   r   r   r   <module>   s    