U
    d                     @   s   d dl Z d dlmZ d dlmZ d dlZd dlm	Z	m
Z
 d dlm  mZ d dlm  mZ e e
jj dG dd dejZedkre   dS )    N)given)core	workspacezNo MKLDNN support.c                   @   st   e Zd Zef e e eddde	j
dd Zef e e e de	j
eddd	d
 ZdS )DropoutTestr   g+?)Xin_placeratioc                 C   sX   t jddg|rdndg|dd}| |||gdg dd }| j|||g|dgd	 d
S )z:Test with is_test=True for a deterministic reference impl.Dropoutr   YTr   is_testr   c                 S   s   | t j| jt jdfS N)ZdtypenpZonesshapeboolx r   G/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/ideep/dropout_op_test.pyreference_dropout_test   s    z@DropoutTest.test_dropout_is_test.<locals>.reference_dropout_testZoutputs_to_checkNr   ZCreateOperatorZassertDeviceChecksZassertReferenceChecks)selfr   r   r   gcdcopr   r   r   r   test_dropout_is_test   s    
    z DropoutTest.test_dropout_is_test)r   r   output_maskTz Skip duo to different rand seed.c                    sp   |  t jddg|rdndg|r&dgng  d d}| |||gdg  fdd	}| j|||g|dgd
 dS )z5Test with ratio=0 for a deterministic reference impl.r	   r   r
   maskg        r   r   c                    s     r
| fS | t j| jt jdfS r   r   r   r   r   r   reference_dropout_ratio05   s    zADropoutTest.test_dropout_ratio0.<locals>.reference_dropout_ratio0r   Nr   )r   r   r   r   r   r   r   r!   r   r    r   test_dropout_ratio0&   s"    
     zDropoutTest.test_dropout_ratio0N)__name__
__module____qualname__r   huZtensorstZbooleansZfloatsmuZgcsr   unittestskipIfr"   r   r   r   r   r      s   




r   __main__)r)   Z
hypothesisr   Zhypothesis.strategiesZ
strategiesr'   Znumpyr   Zcaffe2.pythonr   r   Z"caffe2.python.hypothesis_test_utilpythonZhypothesis_test_utilr&   Zcaffe2.python.ideep_test_utilZideep_test_utilr(   r*   CZ
use_mkldnnZHypothesisTestCaser   r#   mainr   r   r   r   <module>   s   *