a
    ==ic‚  ã                   @   s,   d dl mZ d dlmZ G dd„ deƒZdS )é    )Úschema)Ú
ModelLayerc                       s>   e Zd Zd‡ fdd„	Zdd„ Zdd	„ Zd
d„ Zdd„ Z‡  ZS )ÚDropoutÚdropoutç      à?Fc                    sx   t t| ƒj|||fi |¤Ž t|tjƒs0J dƒ‚|dkr@|dk sLJ d| ƒ‚| ¡ | _| j |  	d¡¡ || _
|| _d S )NzIncorrect input typer   g      ð?z,Expected 0 <= ratio < 1, but got ratio of %sÚoutput)Úsuperr   Ú__init__Ú
isinstancer   ZScalarZclone_schemaÚoutput_schemaÚ	set_valueZget_next_blob_referenceÚdropout_for_evalÚratio)ÚselfÚmodelÚinput_recordÚnamer   r   Úkwargs©Ú	__class__© úm/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/caffe2/python/layers/dropout.pyr	      s    	ÿ
zDropout.__init__c                 C   s8   | j  ¡ }| j ¡ | d¡g }|j||| j|d d S )NZd_mask)r   Úis_test)r   Zfield_blobsr   ZNextScopedBlobr   r   )r   Únetr   Z
input_blobZoutput_blobsr   r   r   Ú_add_ops!   s    

ÿýzDropout._add_opsc                 C   s   | j |dd d S )NF©r   )r   ©r   r   r   r   r   Úadd_train_ops+   s    zDropout.add_train_opsc                 C   s   | j || j d d S )Nr   )r   r   r   r   r   r   Úadd_eval_ops.   s    zDropout.add_eval_opsc                 C   s   |   |¡ d S )N)r   r   r   r   r   Úadd_ops1   s    zDropout.add_ops)r   r   F)	Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r   Ú__classcell__r   r   r   r   r      s      ú
r   N)Zcaffe2.pythonr   Zcaffe2.python.layers.layersr   r   r   r   r   r   Ú<module>   s   