<s> from mock import Mock <EOL> import numpy <EOL> import pytest <EOL> import theano <EOL> class TestAutocrop : <EOL> def test_autocrop_array_shapes ( self ) : <EOL> from lasagne . layers . merge import autocrop_array_shapes <EOL> crop0 = None <EOL> crop1 = [ None , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> crop2 = [ '<STR_LIT>' , '<STR_LIT>' ] <EOL> crop_bad = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> assert autocrop_array_shapes ( <EOL> [ ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> ) , ( <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> ) ] , crop0 ) == [ ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> ) , ( <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> ) ] <EOL> assert autocrop_array_shapes ( <EOL> [ ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> ) , ( <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> ) ] , crop1 ) == [ ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:2> ) ] <EOL> assert autocrop_array_shapes ( <EOL> [ ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> ) , ( <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> ) ] , crop2 ) == [ ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT:8> ) , ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:2> ) ] <EOL> with pytest . raises ( ValueError ) : <EOL> autocrop_array_shapes ( <EOL> [ ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> , <NUM_LIT:8> ) , ( <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> ) ] , crop_bad ) <EOL> with pytest . raises ( ValueError ) : <EOL> autocrop_array_shapes ( <EOL> [ ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:5> , <NUM_LIT:6> , <NUM_LIT:7> ) , ( <NUM_LIT:5> , <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:10> ) ] , crop1 ) <EOL> def test_crop_inputs ( self ) : <EOL> from lasagne . layers . merge import autocrop <EOL> from numpy . testing import assert_array_equal <EOL> crop_0 = None <EOL> crop_1 = [ None , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> crop_l = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> crop_c = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> crop_u = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> crop_x = [ '<STR_LIT>' , '<STR_LIT>' ] <EOL> crop_bad = [ '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' , '<STR_LIT>' ] <EOL> x0 = numpy . random . random ( ( <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:7> ) ) <EOL> x1 = numpy . random . random ( ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> ) ) <EOL> x2 = numpy . random . random ( ( <NUM_LIT:6> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:2> ) ) <EOL> def crop_test ( cropping , inputs , expected ) : <EOL> inputs = [ theano . shared ( x ) for x in inputs ] <EOL> outs = autocrop ( inputs , cropping ) <EOL> outs = [ o . eval ( ) for o in outs ] <EOL> assert len ( outs ) == len ( expected ) <EOL> for o , e in zip ( outs , expected ) : <EOL> assert_array_equal ( o , e ) <EOL> crop_test ( crop_0 , [ x0 , x1 ] , <EOL> [ x0 , x1 ] ) <EOL> crop_test ( crop_1 , [ x0 , x1 ] , <EOL> [ x0 [ : , : <NUM_LIT:2> , <NUM_LIT:1> : <NUM_LIT:4> , <NUM_LIT:3> : ] , x1 [ : , : , : , : ] ] ) <EOL> crop_test ( crop_l , [ x0 , x1 ] , <EOL> [ x0 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : <NUM_LIT:3> , : <NUM_LIT:4> ] , x1 [ : , : , : , : ] ] ) <EOL> crop_test ( crop_c , [ x0 , x1 ] , <EOL> [ x0 [ : <NUM_LIT:1> , : <NUM_LIT:2> , <NUM_LIT:1> : <NUM_LIT:4> , <NUM_LIT:1> : <NUM_LIT:5> ] , x1 [ : , : , : , : ] ] ) <EOL> crop_test ( crop_u , [ x0 , x1 ] , <EOL> [ x0 [ <NUM_LIT:1> : , <NUM_LIT:1> : , <NUM_LIT:2> : , <NUM_LIT:3> : ] , x1 [ : , : , : , : ] ] ) <EOL> crop_test ( crop_0 , [ x0 , x2 ] , <EOL> [ x0 , x2 ] ) <EOL> crop_test ( crop_1 , [ x0 , x2 ] , <EOL> [ x0 [ : , : , : <NUM_LIT:4> , <NUM_LIT:5> : ] , x2 [ : , : , : , : ] ] ) <EOL> crop_test ( crop_l , [ x0 , x2 ] , <EOL> [ x0 [ : , : , : <NUM_LIT:4> , : <NUM_LIT:2> ] , x2 [ : <NUM_LIT:2> , : , : , : ] ] ) <EOL> crop_test ( crop_c , [ x0 , x2 ] , <EOL> [ x0 [ : , : , : <NUM_LIT:4> , <NUM_LIT:2> : <NUM_LIT:4> ] , x2 [ <NUM_LIT:2> : <NUM_LIT:4> , : , : , : ] ] ) <EOL> crop_test ( crop_u , [ x0 , x2 ] , <EOL> [ x0 [ : , : , <NUM_LIT:1> : , <NUM_LIT:5> : ] , x2 [ <NUM_LIT:4> : , : , : , : ] ] ) <EOL> crop_test ( crop_0 , [ x0 , x1 , x2 ] , <EOL> [ x0 , x1 , x2 ] ) <EOL> crop_test ( crop_1 , [ x0 , x1 , x2 ] , <EOL> [ x0 [ : , : <NUM_LIT:2> , <NUM_LIT:1> : <NUM_LIT:4> , <NUM_LIT:5> : ] , x1 [ : , : , : , <NUM_LIT:2> : ] , x2 [ : , : <NUM_LIT:2> , : <NUM_LIT:3> , : ] ] ) <EOL> crop_test ( crop_l , [ x0 , x1 , x2 ] , <EOL> [ x0 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : <NUM_LIT:3> , : <NUM_LIT:2> ] , x1 [ : , : , : , : <NUM_LIT:2> ] , x2 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : <NUM_LIT:3> , : ] ] ) <EOL> crop_test ( crop_c , [ x0 , x1 , x2 ] , <EOL> [ x0 [ : <NUM_LIT:1> , : <NUM_LIT:2> , <NUM_LIT:1> : <NUM_LIT:4> , <NUM_LIT:2> : <NUM_LIT:4> ] , x1 [ : , : , : , <NUM_LIT:1> : <NUM_LIT:3> ] , x2 [ <NUM_LIT:2> : <NUM_LIT:3> , : <NUM_LIT:2> , : <NUM_LIT:3> , : ] ] ) <EOL> crop_test ( crop_u , [ x0 , x1 , x2 ] , <EOL> [ x0 [ <NUM_LIT:1> : , <NUM_LIT:1> : , <NUM_LIT:2> : , <NUM_LIT:5> : ] , x1 [ : , : , : , <NUM_LIT:2> : ] , x2 [ <NUM_LIT:5> : , <NUM_LIT:1> : , <NUM_LIT:1> : , : ] ] ) <EOL> crop_test ( crop_x , [ x0 , x1 , x2 ] , <EOL> [ x0 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x1 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x2 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] ] ) <EOL> crop_test ( crop_x , [ x0 , x1 , x2 , x0 , x1 , x2 ] , <EOL> [ x0 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x1 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x2 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , <EOL> x0 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x1 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x2 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] ] ) <EOL> with pytest . raises ( ValueError ) : <EOL> crop_test ( crop_bad , [ x0 , x1 , x2 ] , <EOL> [ x0 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x1 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x2 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] ] ) <EOL> with pytest . raises ( ValueError ) : <EOL> crop_test ( crop_bad , [ x0 [ : , : , : , <NUM_LIT:0> ] , x1 , x2 [ : , : , : , : , None ] ] , <EOL> [ x0 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x1 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] , x2 [ : <NUM_LIT:1> , : <NUM_LIT:2> , : , : ] ] ) <EOL> class TestConcatLayer : <EOL> @ pytest . fixture <EOL> def layer ( self ) : <EOL> from lasagne . layers . merge import ConcatLayer <EOL> return ConcatLayer ( [ Mock ( ) , Mock ( ) ] , axis = <NUM_LIT:1> ) <EOL> @ pytest . fixture <EOL> def crop_layer_0 ( self ) : <EOL> from lasagne . layers . merge import ConcatLayer <EOL> return ConcatLayer ( [ Mock ( ) , Mock ( ) ] , axis = <NUM_LIT:0> , <EOL> cropping = [ '<STR_LIT>' ] * <NUM_LIT:2> ) <EOL> @ pytest . fixture <EOL> def crop_layer_1 ( self ) : <EOL> from lasagne . layers . merge import ConcatLayer <EOL> return ConcatLayer ( [ Mock ( ) , Mock ( ) ] , axis = <NUM_LIT:1> , <EOL> cropping = [ '<STR_LIT>' ] * <NUM_LIT:2> ) <EOL> def test_get_output_shape_for ( self , layer ) : <EOL> assert layer . get_output_shape_for ( [ ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:3> , <NUM_LIT:5> ) ] ) == ( <NUM_LIT:3> , <NUM_LIT:7> ) <EOL> assert layer . get_output_shape_for ( [ ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:3> , None ) ] ) == ( <NUM_LIT:3> , None ) <EOL> assert layer . get_output_shape_for ( [ ( None , <NUM_LIT:2> ) , ( <NUM_LIT:3> , <NUM_LIT:5> ) ] ) == ( <NUM_LIT:3> , <NUM_LIT:7> ) <EOL> assert layer . get_output_shape_for ( [ ( None , <NUM_LIT:2> ) , ( None , <NUM_LIT:5> ) ] ) == ( None , <NUM_LIT:7> ) <EOL> with pytest . raises ( ValueError ) : <EOL> layer . get_output_shape_for ( [ ( <NUM_LIT:4> , None ) , ( <NUM_LIT:3> , <NUM_LIT:5> ) ] ) <EOL> with pytest . raises ( ValueError ) : <EOL> layer . get_output_shape_for ( [ ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:4> , None ) ] ) <EOL> with pytest . raises ( ValueError ) : <EOL> layer . get_output_shape_for ( [ ( None , <NUM_LIT:2> ) , ( <NUM_LIT:3> , <NUM_LIT:5> ) , ( <NUM_LIT:4> , <NUM_LIT:5> ) ] ) <EOL> def test_get_output_shape_for_cropped ( self , crop_layer_0 , crop_layer_1 ) : <EOL> input_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:4> , <NUM_LIT:5> ) ] <EOL> result_0 = crop_layer_0 . get_output_shape_for ( input_shapes ) <EOL> result_1 = crop_layer_1 . get_output_shape_for ( input_shapes ) <EOL> assert result_0 == ( <NUM_LIT:7> , <NUM_LIT:2> ) <EOL> assert result_1 == ( <NUM_LIT:3> , <NUM_LIT:7> ) <EOL> def test_get_output_for ( self , layer ) : <EOL> inputs = [ theano . shared ( numpy . ones ( ( <NUM_LIT:3> , <NUM_LIT:3> ) ) ) , <EOL> theano . shared ( numpy . ones ( ( <NUM_LIT:3> , <NUM_LIT:2> ) ) ) ] <EOL> result = layer . get_output_for ( inputs ) <EOL> result_eval = result . eval ( ) <EOL> desired_result = numpy . hstack ( [ input . get_value ( ) for input in inputs ] ) <EOL> assert ( result_eval == desired_result ) . all ( ) <EOL> def test_get_output_for_cropped ( self , crop_layer_0 , crop_layer_1 ) : <EOL> x0 = numpy . random . random ( ( <NUM_LIT:5> , <NUM_LIT:3> ) ) <EOL> x1 = numpy . random . random ( ( <NUM_LIT:4> , <NUM_LIT:2> ) ) <EOL> inputs = [ theano . shared ( x0 ) , <EOL> theano . shared ( x1 ) ] <EOL> result_0 = crop_layer_0 . get_output_for ( inputs ) . eval ( ) <EOL> result_1 = crop_layer_1 . get_output_for ( inputs ) . eval ( ) <EOL> desired_result_0 = numpy . concatenate ( [ x0 [ : , : <NUM_LIT:2> ] , x1 [ : , : <NUM_LIT:2> ] ] , axis = <NUM_LIT:0> ) <EOL> desired_result_1 = numpy . concatenate ( [ x0 [ : <NUM_LIT:4> , : ] , x1 [ : <NUM_LIT:4> , : ] ] , axis = <NUM_LIT:1> ) <EOL> assert ( result_0 == desired_result_0 ) . all ( ) <EOL> assert ( result_1 == desired_result_1 ) . all ( ) <EOL> class TestElemwiseSumLayer : <EOL> @ pytest . fixture <EOL> def layer ( self ) : <EOL> from lasagne . layers . merge import ElemwiseSumLayer <EOL> return ElemwiseSumLayer ( [ Mock ( ) , Mock ( ) ] , coeffs = [ <NUM_LIT:2> , - <NUM_LIT:1> ] ) <EOL> @ pytest . fixture <EOL> def crop_layer ( self ) : <EOL> from lasagne . layers . merge import ElemwiseSumLayer <EOL> return ElemwiseSumLayer ( [ Mock ( ) , Mock ( ) ] , coeffs = [ <NUM_LIT:2> , - <NUM_LIT:1> ] , <EOL> cropping = [ '<STR_LIT>' ] * <NUM_LIT:2> ) <EOL> def test_get_output_shape_for ( self , layer ) : <EOL> assert layer . get_output_shape_for ( [ ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:3> , <NUM_LIT:2> ) ] ) == ( <NUM_LIT:3> , <NUM_LIT:2> ) <EOL> assert layer . get_output_shape_for ( [ ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:3> , None ) ] ) == ( <NUM_LIT:3> , <NUM_LIT:2> ) <EOL> assert layer . get_output_shape_for ( [ ( None , <NUM_LIT:2> ) , ( <NUM_LIT:3> , <NUM_LIT:2> ) ] ) == ( <NUM_LIT:3> , <NUM_LIT:2> ) <EOL> assert layer . get_output_shape_for ( [ ( None , <NUM_LIT:2> ) , ( None , <NUM_LIT:2> ) ] ) == ( None , <NUM_LIT:2> ) <EOL> with pytest . raises ( ValueError ) : <EOL> layer . get_output_shape_for ( [ ( <NUM_LIT:3> , None ) , ( <NUM_LIT:4> , <NUM_LIT:2> ) ] ) <EOL> with pytest . raises ( ValueError ) : <EOL> layer . get_output_shape_for ( [ ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:4> , None ) ] ) <EOL> with pytest . raises ( ValueError ) : <EOL> layer . get_output_shape_for ( [ ( None , <NUM_LIT:2> ) , ( <NUM_LIT:3> , <NUM_LIT:2> ) , ( <NUM_LIT:4> , <NUM_LIT:2> ) ] ) <EOL> def test_get_output_for ( self , layer ) : <EOL> a = numpy . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , [ <NUM_LIT:2> , <NUM_LIT:3> ] ] ) <EOL> b = numpy . array ( [ [ <NUM_LIT:1> , <NUM_LIT:2> ] , [ <NUM_LIT:4> , <NUM_LIT:5> ] ] ) <EOL> inputs = [ theano . shared ( a ) , <EOL> theano . shared ( b ) ] <EOL> result = layer . get_output_for ( inputs ) <EOL> result_eval = result . eval ( ) <EOL> desired_result = <NUM_LIT:2> * a - b <EOL> assert ( result_eval == desired_result ) . all ( ) <EOL> def test_get_output_for_cropped ( self , crop_layer ) : <EOL> from numpy . testing import assert_array_almost_equal as aeq <EOL> x0 = numpy . random . random ( ( <NUM_LIT:5> , <NUM_LIT:3> ) ) <EOL> x1 = numpy . random . random ( ( <NUM_LIT:4> , <NUM_LIT:2> ) ) <EOL> inputs = [ theano . shared ( x0 ) , <EOL> theano . shared ( x1 ) ] <EOL> result = crop_layer . get_output_for ( inputs ) . eval ( ) <EOL> desired_result = <NUM_LIT:2> * x0 [ : <NUM_LIT:4> , : <NUM_LIT:2> ] - x1 [ : <NUM_LIT:4> , : <NUM_LIT:2> ] <EOL> aeq ( result , desired_result ) <EOL> def test_bad_coeffs_fails ( self , layer ) : <EOL> from lasagne . layers . merge import ElemwiseSumLayer <EOL> with pytest . raises ( ValueError ) : <EOL> ElemwiseSumLayer ( [ Mock ( ) , Mock ( ) ] , coeffs = [ <NUM_LIT:2> , <NUM_LIT:3> , - <NUM_LIT:1> ] ) <EOL> class TestElemwiseMergeLayerMul : <EOL> @ pytest . fixture <EOL> def layer ( self ) : <EOL> import theano . tensor as T <EOL> from lasagne . layers . merge import ElemwiseMergeLayer <EOL> return ElemwiseMergeLayer ( [ Mock ( ) , Mock ( ) ] , merge_function = T . mul ) <EOL> def test_get_output_for ( self , layer ) : <EOL> a = numpy . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , [ <NUM_LIT:2> , <NUM_LIT:3> ] ] ) <EOL> b = numpy . array ( [ [ <NUM_LIT:1> , <NUM_LIT:2> ] , [ <NUM_LIT:4> , <NUM_LIT:5> ] ] ) <EOL> inputs = [ theano . shared ( a ) , <EOL> theano . shared ( b ) ] <EOL> result = layer . get_output_for ( inputs ) <EOL> result_eval = result . eval ( ) <EOL> desired_result = a * b <EOL> assert ( result_eval == desired_result ) . all ( ) <EOL> class TestElemwiseMergeLayerMaximum : <EOL> @ pytest . fixture <EOL> def layer ( self ) : <EOL> import theano . tensor as T <EOL> from lasagne . layers . merge import ElemwiseMergeLayer <EOL> return ElemwiseMergeLayer ( [ Mock ( ) , Mock ( ) ] , merge_function = T . maximum ) <EOL> def test_get_output_for ( self , layer ) : <EOL> a = numpy . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> ] , [ <NUM_LIT:2> , <NUM_LIT:3> ] ] ) <EOL> b = numpy . array ( [ [ <NUM_LIT:1> , <NUM_LIT:2> ] , [ <NUM_LIT:4> , <NUM_LIT:5> ] ] ) <EOL> inputs = [ theano . shared ( a ) , <EOL> theano . shared ( b ) ] <EOL> result = layer . get_output_for ( inputs ) <EOL> result_eval = result . eval ( ) <EOL> desired_result = numpy . maximum ( a , b ) <EOL> assert ( result_eval == desired_result ) . all ( ) </s>
