U
    ‰d  ã                   @   s”   d dl Zd dlmZ d dlZd dlm  mZ	 d dl
mZmZ d dl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)ÚcoreÚ	workspace)ÚgivenzNo MKLDNN support.c                   @   sJ   e Zd Zef e dd¡e dd¡e dd¡e ¡ dœej—Ždd„ ƒZ	d	S )
ÚTestWeightedSumOpé   é   é   é   é   )ÚnÚmÚdÚ	grad_on_wc                    sÈ   g }g }t ˆƒD ]|}	dt|	ƒ }
dt|	ƒ }| |
|g¡ tj ˆˆ ¡ tj¡}|tƒ |
< | 	|¡ tj d¡ tj¡}|tƒ |< | 	|¡ q‡ ‡‡fdd„}t
jd|dg|d}| j||||d	 d S )
NÚXÚwr   c                     sB   t  ˆˆ f¡}tˆƒD ]$}|| d| d  | d|    }q|fS )Nr	   r   )ÚnpÚzerosÚrange)ÚargsÚresÚi©r   r   r   © úK/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/ideep/weightedsum_op_test.pyÚweighted_sum_op_ref"   s    "z@TestWeightedSumOp.test_weighted_sum.<locals>.weighted_sum_op_refZWeightedSumÚY)r   )Zdevice_optionÚopÚinputsÚ	reference)r   ÚstrÚextendr   ÚrandomZrandZastypeZfloat32ÚvarsÚappendr   ZCreateOperatorZassertReferenceChecks)Úselfr   r   r   r   ÚgcÚdcZinput_namesZ
input_varsr   ZX_nameZw_nameÚvarr   r   r   r   r   Útest_weighted_sum   s2    


üüz#TestWeightedSumOp.test_weighted_sumN)
Ú__name__Ú
__module__Ú__qualname__r   ÚstZintegersZbooleansÚmuZgcs_ideep_onlyr(   r   r   r   r   r      s   
 ÿþr   Ú__main__)Znumpyr   Zhypothesis.strategiesZ
strategiesr,   ZunittestZ"caffe2.python.hypothesis_test_utilÚpythonZhypothesis_test_utilÚhuZcaffe2.pythonr   r   Z
hypothesisr   Zcaffe2.python.ideep_test_utilZideep_test_utilr-   ZskipIfÚCZ
use_mkldnnZHypothesisTestCaser   r)   Úmainr   r   r   r   Ú<module>   s   (