<s> from nose . plugins . skip import SkipTest <EOL> from nose . plugins . attrib import attr <EOL> import numpy <EOL> import theano <EOL> import theano . tensor as T <EOL> from theano . tests import unittest_tools as utt <EOL> from theano . tensor . nnet import corr , conv <EOL> from theano . tensor . basic import _allclose <EOL> class TestCorr2D ( utt . InferShapeTester ) : <EOL> if theano . config . mode == "<STR_LIT>" : <EOL> mode = theano . compile . get_mode ( "<STR_LIT>" ) <EOL> else : <EOL> mode = None <EOL> dtype = theano . config . floatX <EOL> def setUp ( self ) : <EOL> super ( TestCorr2D , self ) . setUp ( ) <EOL> self . input = T . tensor4 ( '<STR_LIT:input>' , dtype = self . dtype ) <EOL> self . input . name = '<STR_LIT>' <EOL> self . filters = T . tensor4 ( '<STR_LIT>' , dtype = self . dtype ) <EOL> self . filters . name = '<STR_LIT>' <EOL> if not conv . imported_scipy_signal and theano . config . cxx == "<STR_LIT>" : <EOL> raise SkipTest ( "<STR_LIT>" ) <EOL> if not theano . config . blas . ldflags : <EOL> raise SkipTest ( "<STR_LIT>" ) <EOL> def validate ( self , image_shape , filter_shape , <EOL> border_mode = '<STR_LIT>' , subsample = ( <NUM_LIT:1> , <NUM_LIT:1> ) , <EOL> input = None , filters = None , <EOL> verify_grad = True , non_contiguous = False ) : <EOL> """<STR_LIT>""" <EOL> N_image_shape = [ T . get_scalar_constant_value ( T . as_tensor_variable ( x ) ) <EOL> for x in image_shape ] <EOL> N_filter_shape = [ T . get_scalar_constant_value ( T . as_tensor_variable ( x ) ) <EOL> for x in filter_shape ] <EOL> if input is None : <EOL> input = self . input <EOL> if filters is None : <EOL> filters = self . filters <EOL> def sym_CorrMM ( input , filters ) : <EOL> input . name = '<STR_LIT:input>' <EOL> filters . name = '<STR_LIT>' <EOL> rval = corr . CorrMM ( border_mode , subsample ) ( input , filters ) <EOL> rval . name = '<STR_LIT>' <EOL> return rval <EOL> output = sym_CorrMM ( input , filters ) <EOL> output . name = '<STR_LIT>' % ( input . name , filters . name ) <EOL> theano_corr = theano . function ( [ input , filters ] , output , mode = self . mode ) <EOL> image_data = numpy . random . random ( N_image_shape ) . astype ( self . dtype ) <EOL> filter_data = numpy . random . random ( N_filter_shape ) . astype ( self . dtype ) <EOL> if non_contiguous : <EOL> image_data = numpy . transpose ( image_data , axes = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:2> ) ) <EOL> image_data = image_data . copy ( ) <EOL> image_data = numpy . transpose ( image_data , axes = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:2> ) ) <EOL> filter_data = numpy . transpose ( filter_data , axes = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:2> ) ) <EOL> filter_data = filter_data . copy ( ) <EOL> filter_data = numpy . transpose ( filter_data , axes = ( <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:2> ) ) <EOL> assert not image_data . flags [ '<STR_LIT>' ] <EOL> assert not filter_data . flags [ '<STR_LIT>' ] <EOL> theano_output = theano_corr ( image_data , filter_data ) <EOL> filter_data_corr = numpy . array ( filter_data [ : , : , : : - <NUM_LIT:1> , : : - <NUM_LIT:1> ] , <EOL> copy = True , <EOL> order = '<STR_LIT:C>' ) <EOL> orig_image_data = image_data <EOL> img_shape2d = numpy . array ( N_image_shape [ - <NUM_LIT:2> : ] ) <EOL> fil_shape2d = numpy . array ( N_filter_shape [ - <NUM_LIT:2> : ] ) <EOL> subsample2d = numpy . array ( subsample ) <EOL> if border_mode == '<STR_LIT>' : <EOL> padHW = ( fil_shape2d - <NUM_LIT:1> ) <EOL> elif border_mode == '<STR_LIT>' : <EOL> padHW = numpy . array ( [ <NUM_LIT:0> , <NUM_LIT:0> ] ) <EOL> elif border_mode == '<STR_LIT>' : <EOL> padHW = numpy . floor ( fil_shape2d / <NUM_LIT:2> ) . astype ( '<STR_LIT>' ) <EOL> elif isinstance ( border_mode , tuple ) : <EOL> padHW = numpy . array ( border_mode ) <EOL> elif isinstance ( border_mode , int ) : <EOL> padHW = numpy . array ( [ border_mode , border_mode ] ) <EOL> else : <EOL> raise NotImplementedError ( '<STR_LIT>' . format ( border_mode ) ) <EOL> out_shape2d = numpy . floor ( ( img_shape2d + <NUM_LIT:2> * ( padHW ) - fil_shape2d ) / subsample2d ) + <NUM_LIT:1> <EOL> out_shape2d = out_shape2d . astype ( '<STR_LIT>' ) <EOL> out_shape = ( N_image_shape [ <NUM_LIT:0> ] , N_filter_shape [ <NUM_LIT:0> ] ) + tuple ( out_shape2d ) <EOL> ref_output = numpy . zeros ( out_shape ) <EOL> ref_output . fill ( <NUM_LIT:0> ) <EOL> image_data2 = numpy . zeros ( ( N_image_shape [ <NUM_LIT:0> ] , N_image_shape [ <NUM_LIT:1> ] , <EOL> N_image_shape [ <NUM_LIT:2> ] + <NUM_LIT:2> * padHW [ <NUM_LIT:0> ] , <EOL> N_image_shape [ <NUM_LIT:3> ] + <NUM_LIT:2> * padHW [ <NUM_LIT:1> ] ) ) <EOL> image_data2 [ : , : , padHW [ <NUM_LIT:0> ] : padHW [ <NUM_LIT:0> ] + N_image_shape [ <NUM_LIT:2> ] , <EOL> padHW [ <NUM_LIT:1> ] : padHW [ <NUM_LIT:1> ] + N_image_shape [ <NUM_LIT:3> ] ] = image_data <EOL> image_data = image_data2 <EOL> N_image_shape = image_data . shape <EOL> for bb in range ( N_image_shape [ <NUM_LIT:0> ] ) : <EOL> for nn in range ( N_filter_shape [ <NUM_LIT:0> ] ) : <EOL> for im0 in range ( N_image_shape [ <NUM_LIT:1> ] ) : <EOL> filter2d = filter_data_corr [ nn , im0 , : , : ] <EOL> image2d = image_data [ bb , im0 , : , : ] <EOL> for row in range ( ref_output . shape [ <NUM_LIT:2> ] ) : <EOL> irow = row * subsample [ <NUM_LIT:0> ] <EOL> for col in range ( ref_output . shape [ <NUM_LIT:3> ] ) : <EOL> icol = col * subsample [ <NUM_LIT:1> ] <EOL> ref_output [ bb , nn , row , col ] += ( image2d [ <EOL> irow : irow + N_filter_shape [ <NUM_LIT:2> ] , <EOL> icol : icol + N_filter_shape [ <NUM_LIT:3> ] ] * filter2d [ : : - <NUM_LIT:1> , : : - <NUM_LIT:1> ] <EOL> ) . sum ( ) <EOL> self . assertTrue ( _allclose ( theano_output , ref_output ) ) <EOL> if verify_grad : <EOL> utt . verify_grad ( sym_CorrMM , [ orig_image_data , filter_data ] ) <EOL> @ attr ( '<STR_LIT>' ) <EOL> def test_basic ( self ) : <EOL> """<STR_LIT>""" <EOL> border_modes = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , ( <NUM_LIT:1> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> ( <NUM_LIT:3> , <NUM_LIT:3> ) , <NUM_LIT:1> ] <EOL> img_shapes = [ ( <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , <EOL> ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) ] <EOL> fil_shapes = [ ( <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:2> ) , <EOL> ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> for border_mode in border_modes : <EOL> for img , fil in zip ( img_shapes , fil_shapes ) : <EOL> self . validate ( img , fil , border_mode , verify_grad = False ) <EOL> self . validate ( ( <NUM_LIT:1> , <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT> ) , ( <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT:1> ) , '<STR_LIT>' , verify_grad = False ) <EOL> def test_img_kernel_same_shape ( self ) : <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , '<STR_LIT>' ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , '<STR_LIT>' ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , '<STR_LIT>' ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:1> , <NUM_LIT:1> ) ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , <NUM_LIT:1> ) <EOL> @ attr ( '<STR_LIT>' ) <EOL> def test_subsample ( self ) : <EOL> """<STR_LIT>""" <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , '<STR_LIT>' , subsample = ( <NUM_LIT:2> , <NUM_LIT:2> ) ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , '<STR_LIT>' , subsample = ( <NUM_LIT:2> , <NUM_LIT:1> ) ) <EOL> self . validate ( ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:6> ) , ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , '<STR_LIT>' , subsample = ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , '<STR_LIT>' , subsample = ( <NUM_LIT:2> , <NUM_LIT:2> ) ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , '<STR_LIT>' , subsample = ( <NUM_LIT:2> , <NUM_LIT:1> ) ) <EOL> self . validate ( ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:6> ) , ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , '<STR_LIT>' , subsample = ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , '<STR_LIT>' , subsample = ( <NUM_LIT:2> , <NUM_LIT:2> ) ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , '<STR_LIT>' , subsample = ( <NUM_LIT:2> , <NUM_LIT:1> ) ) <EOL> self . validate ( ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:6> ) , ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , '<STR_LIT>' , subsample = ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( <NUM_LIT:1> , <NUM_LIT:1> ) , subsample = ( <NUM_LIT:2> , <NUM_LIT:2> ) ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , subsample = ( <NUM_LIT:2> , <NUM_LIT:1> ) ) <EOL> self . validate ( ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:6> ) , ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , subsample = ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> self . validate ( ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:6> ) , ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ) , <NUM_LIT:1> , subsample = ( <NUM_LIT:3> , <NUM_LIT:3> ) ) <EOL> @ attr ( '<STR_LIT>' ) <EOL> def test_shape_Constant_tensor ( self ) : <EOL> """<STR_LIT>""" <EOL> as_t = T . as_tensor_variable <EOL> border_modes = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , ( <NUM_LIT:1> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , <NUM_LIT:1> ] <EOL> for border_mode in border_modes : <EOL> self . validate ( ( as_t ( <NUM_LIT:3> ) , as_t ( <NUM_LIT:2> ) , as_t ( <NUM_LIT:7> ) , as_t ( <NUM_LIT:5> ) ) , <EOL> ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , border_mode ) <EOL> self . validate ( as_t ( [ <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ] ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , border_mode ) <EOL> self . validate ( as_t ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , border_mode ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( as_t ( <NUM_LIT:5> ) , as_t ( <NUM_LIT:2> ) , as_t ( <NUM_LIT:2> ) , <EOL> as_t ( <NUM_LIT:3> ) ) , '<STR_LIT>' ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , as_t ( [ <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , border_mode ) <EOL> self . validate ( as_t ( [ <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ] ) , as_t ( [ <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , border_mode ) <EOL> def test_invalid_filter_shape ( self ) : <EOL> """<STR_LIT>""" <EOL> self . assertRaises ( ValueError , self . validate , <EOL> ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:5> ) , <EOL> '<STR_LIT>' ) <EOL> def test_full_mode ( self ) : <EOL> """<STR_LIT>""" <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , '<STR_LIT>' ) <EOL> def f ( ) : <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , '<STR_LIT>' ) <EOL> self . assertRaises ( Exception , f ) <EOL> def test_wrong_input ( self ) : <EOL> """<STR_LIT>""" <EOL> self . assertRaises ( Exception , self . validate , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , <EOL> '<STR_LIT>' , input = T . dmatrix ( ) ) <EOL> self . assertRaises ( Exception , self . validate , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , <EOL> '<STR_LIT>' , filters = T . dvector ( ) ) <EOL> self . assertRaises ( Exception , self . validate , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , <EOL> '<STR_LIT>' , input = T . dtensor3 ( ) ) <EOL> @ attr ( '<STR_LIT>' ) <EOL> def test_infer_shape_forward ( self ) : <EOL> def rand ( * shape ) : <EOL> r = numpy . asarray ( numpy . random . rand ( * shape ) , dtype = '<STR_LIT>' ) <EOL> return r * <NUM_LIT:2> - <NUM_LIT:1> <EOL> corrMM = corr . CorrMM <EOL> adtens = T . dtensor4 ( ) <EOL> bdtens = T . dtensor4 ( ) <EOL> aivec_vals = [ [ <NUM_LIT:4> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:3> ] , [ <NUM_LIT:6> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:3> ] , [ <NUM_LIT:3> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:5> ] , <EOL> [ <NUM_LIT:3> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:5> ] , [ <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:3> ] ] <EOL> bivec_vals = [ [ <NUM_LIT:7> , <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:2> ] , [ <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:3> ] , [ <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:3> , <NUM_LIT:2> ] , <EOL> [ <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:2> , <NUM_LIT:3> ] , [ <NUM_LIT:6> , <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:3> ] ] <EOL> modes = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , ( <NUM_LIT:1> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , <NUM_LIT:1> ] <EOL> subsamples = [ ( <NUM_LIT:1> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) ] <EOL> for aivec_val , bivec_val in zip ( aivec_vals , bivec_vals ) : <EOL> adtens_val = rand ( * aivec_val ) <EOL> bdtens_val = rand ( * bivec_val ) <EOL> for mode in modes : <EOL> for subsample in subsamples : <EOL> cdtens = corrMM ( border_mode = mode , subsample = subsample ) ( adtens , bdtens ) <EOL> self . _compile_and_check ( [ adtens , bdtens ] , <EOL> [ cdtens ] , <EOL> [ adtens_val , bdtens_val ] , corrMM , <EOL> warn = False ) <EOL> @ attr ( '<STR_LIT>' ) <EOL> def test_infer_shape_gradW ( self ) : <EOL> def rand ( * shape ) : <EOL> r = numpy . asarray ( numpy . random . rand ( * shape ) , dtype = '<STR_LIT>' ) <EOL> return r * <NUM_LIT:2> - <NUM_LIT:1> <EOL> corrMM = corr . CorrMM <EOL> gradW = corr . CorrMM_gradWeights <EOL> adtens = T . dtensor4 ( ) <EOL> bdtens = T . dtensor4 ( ) <EOL> aivec_vals = [ [ <NUM_LIT:1> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:3> ] , [ <NUM_LIT:8> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:3> ] , [ <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:9> , <NUM_LIT:4> ] , <EOL> [ <NUM_LIT:9> , <NUM_LIT:6> , <NUM_LIT:8> , <NUM_LIT:5> ] , [ <NUM_LIT:9> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:8> ] ] <EOL> bivec_vals = [ [ <NUM_LIT:7> , <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:1> ] , [ <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:3> ] , [ <NUM_LIT:12> , <NUM_LIT:6> , <NUM_LIT:3> , <NUM_LIT:2> ] , <EOL> [ <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> ] , [ <NUM_LIT:11> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:3> ] ] <EOL> modes = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , ( <NUM_LIT:1> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , <NUM_LIT:1> ] <EOL> subsamples = [ ( <NUM_LIT:1> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) ] <EOL> for aivec_val , bivec_val in zip ( aivec_vals , bivec_vals ) : <EOL> adtens_val = rand ( * aivec_val ) <EOL> bdtens_val = rand ( * bivec_val ) <EOL> for mode in modes : <EOL> for subsample in subsamples : <EOL> cdtens = corrMM ( border_mode = mode , subsample = subsample ) ( adtens , bdtens ) <EOL> f = theano . function ( [ adtens , bdtens ] , cdtens ) <EOL> cdtens_val = f ( adtens_val , bdtens_val ) <EOL> shape = ( theano . shared ( bivec_val [ <NUM_LIT:2> ] ) , theano . shared ( bivec_val [ <NUM_LIT:3> ] ) ) <EOL> bdtens_g = gradW ( border_mode = mode , <EOL> subsample = subsample ) ( adtens , cdtens , shape = shape ) <EOL> self . _compile_and_check ( [ adtens , cdtens ] , <EOL> [ bdtens_g ] , <EOL> [ adtens_val , cdtens_val ] , gradW , <EOL> warn = False ) <EOL> @ attr ( '<STR_LIT>' ) <EOL> def test_infer_shape_gradI ( self ) : <EOL> def rand ( * shape ) : <EOL> r = numpy . asarray ( numpy . random . rand ( * shape ) , dtype = '<STR_LIT>' ) <EOL> return r * <NUM_LIT:2> - <NUM_LIT:1> <EOL> corrMM = corr . CorrMM <EOL> gradI = corr . CorrMM_gradInputs <EOL> adtens = T . dtensor4 ( ) <EOL> bdtens = T . dtensor4 ( ) <EOL> aivec_vals = [ [ <NUM_LIT:1> , <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:3> ] , [ <NUM_LIT:8> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:3> ] , [ <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:9> , <NUM_LIT:4> ] , <EOL> [ <NUM_LIT:9> , <NUM_LIT:6> , <NUM_LIT:8> , <NUM_LIT:5> ] , [ <NUM_LIT:9> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:8> ] ] <EOL> bivec_vals = [ [ <NUM_LIT:7> , <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:1> ] , [ <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:3> ] , [ <NUM_LIT:12> , <NUM_LIT:6> , <NUM_LIT:3> , <NUM_LIT:2> ] , <EOL> [ <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:1> , <NUM_LIT:3> ] , [ <NUM_LIT:7> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:4> ] ] <EOL> modes = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , ( <NUM_LIT:1> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , <NUM_LIT:1> ] <EOL> subsamples = [ ( <NUM_LIT:1> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) ] <EOL> for aivec_val , bivec_val in zip ( aivec_vals , bivec_vals ) : <EOL> adtens_val = rand ( * aivec_val ) <EOL> bdtens_val = rand ( * bivec_val ) <EOL> for mode in modes : <EOL> for subsample in subsamples : <EOL> cdtens = corrMM ( border_mode = mode , subsample = subsample ) ( adtens , bdtens ) <EOL> f = theano . function ( [ adtens , bdtens ] , cdtens ) <EOL> cdtens_val = f ( adtens_val , bdtens_val ) <EOL> shape = ( theano . shared ( aivec_val [ <NUM_LIT:2> ] ) , theano . shared ( aivec_val [ <NUM_LIT:3> ] ) ) <EOL> adtens_g = gradI ( border_mode = mode , <EOL> subsample = subsample ) ( bdtens , cdtens , shape = shape ) <EOL> self . _compile_and_check ( [ bdtens , cdtens ] , <EOL> [ adtens_g ] , <EOL> [ bdtens_val , cdtens_val ] , gradI , <EOL> warn = False ) <EOL> def test_non_contiguous ( self ) : <EOL> self . validate ( ( <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:2> ) , '<STR_LIT>' , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , '<STR_LIT>' , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , '<STR_LIT>' , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:2> ) , '<STR_LIT>' , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , '<STR_LIT>' , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , '<STR_LIT>' , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , '<STR_LIT>' , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , '<STR_LIT>' , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:8> , <NUM_LIT:8> ) , ( <NUM_LIT:4> , <NUM_LIT:2> , <NUM_LIT:5> , <NUM_LIT:5> ) , ( <NUM_LIT:1> , <NUM_LIT:1> ) , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( <NUM_LIT:1> , <NUM_LIT:2> ) , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( <NUM_LIT:2> , <NUM_LIT:1> ) , non_contiguous = True ) <EOL> self . validate ( ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> ) , <NUM_LIT:2> , non_contiguous = True ) <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> t = TestCorr2D ( '<STR_LIT>' ) <EOL> t . setUp ( ) <EOL> t . test_infer_shape ( ) </s>
