a
    ==ic                     @   sJ   d dl Zd dlZd dlmZmZmZ G dd dejZe	dkrFe
  dS )    N)core	workspace	test_utilc                   @   s   e Zd Zdd ZdS )TestToyRegressionc                 C   s  t   td}|jg dddgddd}|jg ddgd	d
}|jg dddgddgd}|jg ddgdgd}|jg ddgdd
}|jg ddgdd
}|jg ddgdtjjd}td}	|	j	g dddgd	dd}
|

||gd}|

||gd}|	||gd}|g dg}|	j|gdd}|	|| |	j|ddd d!d"d# |	|||t| |g| |	|||t| |g| |||fD ]}|	|g  qtd$}|td| |td|	d% t | t d}t d}tjj|ddggdd& tjj|dgdd& t   d'S )(aE  Tests a toy regression end to end.

        The test code carries a simple toy regression in the form
            y = 2.0 x1 + 1.5 x2 + 0.5
        by randomly generating gaussian inputs and calculating the ground
        truth outputs in the net as well. It uses a standard SGD to then
        train the parameters.
        initW      g      g      ?)shapeminmaxBg        )r
   valueW_gtg       @g      ?)r
   valuesB_gtg      ?LRgONEITERr   )r
   r   ZdtypetrainX@   )r
   meanZstdY_gtY_preddistloss)skipstep   g?)Zbase_lrpolicyZstepsizegammaZtoy_regression   )decimalN)r   ZResetWorkspacer   ZNetZUniformFillZConstantFillZGivenTensorFillZDataTypeZINT64ZGaussianFillFCZSquaredL2DistanceZAveragedLossZAddGradientOperatorsZIterZLearningRateZWeightedSumstrZPrintZPlanZAddStepZExecutionStepZRunPlanZ	FetchBlobnptestingZassert_array_almost_equal)selfZinit_netr   r   r   r   r   r   r   Z	train_netr   r   r   r   r   Zinput_to_gradZblobZplanZW_resultZB_result r)   r/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/caffe2/python/toy_regression_test.pytestToyRegression   sJ    	






z#TestToyRegression.testToyRegressionN)__name__
__module____qualname__r+   r)   r)   r)   r*   r      s   r   __main__)numpyr&   ZunittestZcaffe2.pythonr   r   r   ZTestCaser   r,   mainr)   r)   r)   r*   <module>   s
   8