<s> import os <EOL> import pkg_resources <EOL> import tempfile <EOL> import unittest <EOL> import mock <EOL> import numpy <EOL> import six <EOL> import chainer <EOL> from chainer import links <EOL> from chainer . links import caffe <EOL> from chainer import testing <EOL> if links . caffe . caffe_function . available : <EOL> from chainer . links . caffe . caffe_function import caffe_pb <EOL> def _iter_init ( param , data ) : <EOL> if isinstance ( data , list ) : <EOL> for d in data : <EOL> if hasattr ( param , '<STR_LIT>' ) : <EOL> param . append ( d ) <EOL> else : <EOL> param . add ( ) <EOL> if isinstance ( d , ( list , dict ) ) : <EOL> _iter_init ( param [ - <NUM_LIT:1> ] , d ) <EOL> else : <EOL> param [ - <NUM_LIT:1> ] = d <EOL> elif isinstance ( data , dict ) : <EOL> for k , d in data . items ( ) : <EOL> if isinstance ( d , ( list , dict ) ) : <EOL> _iter_init ( getattr ( param , k ) , d ) <EOL> else : <EOL> setattr ( param , k , d ) <EOL> else : <EOL> setattr ( param , data ) <EOL> def _make_param ( data ) : <EOL> param = caffe_pb . NetParameter ( ) <EOL> _iter_init ( param , data ) <EOL> return param <EOL> @ unittest . skipUnless ( links . caffe . caffe_function . available , <EOL> '<STR_LIT>' ) <EOL> class TestCaffeFunctionBase ( unittest . TestCase ) : <EOL> def setUp ( self ) : <EOL> param = _make_param ( self . data ) <EOL> with tempfile . NamedTemporaryFile ( delete = False ) as f : <EOL> self . temp_file_path = f . name <EOL> f . write ( param . SerializeToString ( ) ) <EOL> def tearDown ( self ) : <EOL> os . remove ( self . temp_file_path ) <EOL> def init_func ( self ) : <EOL> self . func = caffe . CaffeFunction ( self . temp_file_path ) <EOL> class TestCaffeFunctionBaseMock ( TestCaffeFunctionBase ) : <EOL> def setUp ( self ) : <EOL> outs = [ ] <EOL> for shape in self . out_shapes : <EOL> out_data = numpy . random . uniform ( - <NUM_LIT:1> , <NUM_LIT:1> , shape ) . astype ( numpy . float32 ) <EOL> outs . append ( chainer . Variable ( out_data ) ) <EOL> self . outputs = tuple ( outs ) <EOL> ret_value = outs [ <NUM_LIT:0> ] if len ( outs ) == <NUM_LIT:1> else tuple ( outs ) <EOL> m = mock . MagicMock ( name = self . func_name , return_value = ret_value ) <EOL> self . patch = mock . patch ( self . func_name , m ) <EOL> self . mock = self . patch . start ( ) <EOL> super ( TestCaffeFunctionBaseMock , self ) . setUp ( ) <EOL> def tearDown ( self ) : <EOL> super ( TestCaffeFunctionBaseMock , self ) . tearDown ( ) <EOL> self . patch . stop ( ) <EOL> def call ( self , inputs , outputs ) : <EOL> invars = [ ] <EOL> for shape in self . in_shapes : <EOL> data = numpy . random . uniform ( - <NUM_LIT:1> , <NUM_LIT:1> , shape ) . astype ( numpy . float32 ) <EOL> invars . append ( chainer . Variable ( data ) ) <EOL> self . inputs = invars <EOL> out = self . func ( inputs = dict ( zip ( inputs , invars ) ) , <EOL> outputs = outputs , train = False ) <EOL> self . assertEqual ( len ( out ) , len ( self . outputs ) ) <EOL> for actual , expect in zip ( out , self . outputs ) : <EOL> self . assertIs ( actual , expect ) <EOL> class TestConcat ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) , ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' , '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:z>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:2> <EOL> } <EOL> } <EOL> ] <EOL> } <EOL> def test_concat ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:1> ) <EOL> self . call ( [ '<STR_LIT:x>' , '<STR_LIT:y>' ] , [ '<STR_LIT:z>' ] ) <EOL> self . mock . assert_called_once_with ( <EOL> ( self . inputs [ <NUM_LIT:0> ] , self . inputs [ <NUM_LIT:1> ] ) , axis = <NUM_LIT:2> ) <EOL> class TestConvolution ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:2> , <EOL> '<STR_LIT>' : <NUM_LIT:3> , <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : <NUM_LIT:3> , <EOL> '<STR_LIT>' : True , <EOL> } , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : <NUM_LIT:6> , <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT:data>' : list ( range ( <NUM_LIT> ) ) <EOL> } , <EOL> { <EOL> '<STR_LIT:data>' : list ( range ( <NUM_LIT:6> ) ) <EOL> } <EOL> ] <EOL> } <EOL> ] <EOL> } <EOL> def test_convolution ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:1> ) <EOL> f = self . func . l1 <EOL> self . assertIsInstance ( f , links . Convolution2D ) <EOL> for i in range ( <NUM_LIT:3> ) : <EOL> in_slice = slice ( i * <NUM_LIT:4> , ( i + <NUM_LIT:1> ) * <NUM_LIT:4> ) <EOL> out_slice = slice ( i * <NUM_LIT:2> , ( i + <NUM_LIT:1> ) * <NUM_LIT:2> ) <EOL> w = f . W . data [ out_slice , in_slice ] <EOL> numpy . testing . assert_array_equal ( <EOL> w . flatten ( ) , range ( i * <NUM_LIT:32> , ( i + <NUM_LIT:1> ) * <NUM_LIT:32> ) ) <EOL> numpy . testing . assert_array_equal ( <EOL> f . b . data , range ( <NUM_LIT:6> ) ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( self . inputs [ <NUM_LIT:0> ] ) <EOL> class TestData ( TestCaffeFunctionBase ) : <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> } <EOL> ] <EOL> } <EOL> def test_data ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:0> ) <EOL> class TestDropout ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT> <EOL> } <EOL> } <EOL> ] <EOL> } <EOL> def test_dropout ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:1> ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( <EOL> self . inputs [ <NUM_LIT:0> ] , ratio = <NUM_LIT> , train = False ) <EOL> class TestInnerProduct ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : True , <EOL> '<STR_LIT>' : <NUM_LIT:1> <EOL> } , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : [ <NUM_LIT:2> , <NUM_LIT:3> ] <EOL> } , <EOL> '<STR_LIT:data>' : list ( range ( <NUM_LIT:6> ) ) , <EOL> } , <EOL> { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : [ <NUM_LIT:2> ] <EOL> } , <EOL> '<STR_LIT:data>' : list ( range ( <NUM_LIT:2> ) ) , <EOL> } <EOL> ] <EOL> } <EOL> ] <EOL> } <EOL> def test_linear ( self ) : <EOL> self . init_func ( ) <EOL> f = self . func . l1 <EOL> self . assertIsInstance ( f , links . Linear ) <EOL> numpy . testing . assert_array_equal ( <EOL> f . W . data , numpy . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> ] , [ <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:5> ] ] , dtype = numpy . float32 ) ) <EOL> numpy . testing . assert_array_equal ( <EOL> f . b . data , numpy . array ( [ <NUM_LIT:0> , <NUM_LIT:1> ] , dtype = numpy . float32 ) ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( self . inputs [ <NUM_LIT:0> ] ) <EOL> class TestInnerProductDim4 ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : False , <EOL> '<STR_LIT>' : <NUM_LIT:1> <EOL> } , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : [ <NUM_LIT:4> , <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:3> ] <EOL> } , <EOL> '<STR_LIT:data>' : list ( range ( <NUM_LIT:6> ) ) , <EOL> } <EOL> ] <EOL> } <EOL> ] <EOL> } <EOL> def test_linear ( self ) : <EOL> self . init_func ( ) <EOL> f = self . func . l1 <EOL> self . assertIsInstance ( f , links . Linear ) <EOL> numpy . testing . assert_array_equal ( <EOL> f . W . data , numpy . array ( [ [ <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> ] , [ <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:5> ] ] , dtype = numpy . float32 ) ) <EOL> self . assertIsNone ( f . b ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( self . inputs [ <NUM_LIT:0> ] ) <EOL> class TestInnerProductInvalidDim ( TestCaffeFunctionBase ) : <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : [ <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:5> , <NUM_LIT:6> ] <EOL> } , <EOL> } , <EOL> ] <EOL> } <EOL> ] <EOL> } <EOL> def test_linear ( self ) : <EOL> with self . assertRaises ( RuntimeError ) : <EOL> self . init_func ( ) <EOL> class TestInnerProductNonDefaultAxis ( TestCaffeFunctionBase ) : <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:0> <EOL> } <EOL> } <EOL> ] <EOL> } <EOL> def test_linear ( self ) : <EOL> with self . assertRaises ( RuntimeError ) : <EOL> self . init_func ( ) <EOL> class TestLRN ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : <NUM_LIT:0.5> , <EOL> '<STR_LIT>' : <NUM_LIT> , <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> '<STR_LIT:k>' : <NUM_LIT:0.5> <EOL> } , <EOL> } <EOL> ] <EOL> } <EOL> def test_lrn ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:1> ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( <EOL> self . inputs [ <NUM_LIT:0> ] , n = <NUM_LIT:4> , k = <NUM_LIT:0.5> , alpha = <NUM_LIT:0.5> / <NUM_LIT:4> , beta = <NUM_LIT> ) <EOL> class TestLRNWithinChannel ( TestCaffeFunctionBase ) : <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:1> , <EOL> } , <EOL> } <EOL> ] <EOL> } <EOL> def test_lrn ( self ) : <EOL> with self . assertRaises ( RuntimeError ) : <EOL> self . init_func ( ) <EOL> class TestMaxPooling ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> '<STR_LIT>' : <NUM_LIT:2> , <EOL> '<STR_LIT>' : <NUM_LIT:3> , <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : <NUM_LIT:5> , <EOL> '<STR_LIT>' : <NUM_LIT:6> , <EOL> '<STR_LIT>' : <NUM_LIT:7> , <EOL> } <EOL> } <EOL> ] <EOL> } <EOL> def test_max_pooling ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:1> ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( <EOL> self . inputs [ <NUM_LIT:0> ] , ( <NUM_LIT:2> , <NUM_LIT:3> ) , stride = ( <NUM_LIT:4> , <NUM_LIT:5> ) , pad = ( <NUM_LIT:6> , <NUM_LIT:7> ) ) <EOL> class TestAveragePooling ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:1> , <EOL> '<STR_LIT>' : <NUM_LIT:2> , <EOL> '<STR_LIT>' : <NUM_LIT:4> , <EOL> '<STR_LIT>' : <NUM_LIT:6> , <EOL> } <EOL> } <EOL> ] <EOL> } <EOL> def test_max_pooling ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:1> ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( <EOL> self . inputs [ <NUM_LIT:0> ] , <NUM_LIT:2> , stride = <NUM_LIT:4> , pad = <NUM_LIT:6> ) <EOL> class TestStochasticPooling ( TestCaffeFunctionBase ) : <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:2> , <EOL> } <EOL> } <EOL> ] <EOL> } <EOL> def test_stochastic_pooling ( self ) : <EOL> with self . assertRaises ( RuntimeError ) : <EOL> self . init_func ( ) <EOL> class TestReLU ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:0> <EOL> } <EOL> } <EOL> ] <EOL> } <EOL> def test_lrn ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:1> ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( self . inputs [ <NUM_LIT:0> ] ) <EOL> class TestLeakyReLU ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:0.5> <EOL> } <EOL> } <EOL> ] <EOL> } <EOL> def test_lrn ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:1> ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( self . inputs [ <NUM_LIT:0> ] , slope = <NUM_LIT:0.5> ) <EOL> class TestSoftmaxWithLoss ( TestCaffeFunctionBaseMock ) : <EOL> func_name = '<STR_LIT>' <EOL> in_shapes = [ ( <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:3> ) ] <EOL> out_shapes = [ ( ) ] <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' ] , <EOL> } <EOL> ] <EOL> } <EOL> def test_softmax_with_loss ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( len ( self . func . layers ) , <NUM_LIT:1> ) <EOL> self . call ( [ '<STR_LIT:x>' ] , [ '<STR_LIT:y>' ] ) <EOL> self . mock . assert_called_once_with ( self . inputs [ <NUM_LIT:0> ] ) <EOL> class TestSoftmaxWithLossInvalidAxis ( TestCaffeFunctionBase ) : <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:0> , <EOL> } <EOL> } <EOL> ] <EOL> } <EOL> def test_softmax_with_loss_invalid_axis ( self ) : <EOL> with self . assertRaises ( RuntimeError ) : <EOL> self . init_func ( ) <EOL> class TestSplit ( TestCaffeFunctionBase ) : <EOL> data = { <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT:x>' ] , <EOL> '<STR_LIT>' : [ '<STR_LIT:y>' , '<STR_LIT:z>' ] , <EOL> } <EOL> ] <EOL> } <EOL> def test_split ( self ) : <EOL> self . init_func ( ) <EOL> self . assertEqual ( self . func . split_map , { '<STR_LIT:y>' : '<STR_LIT:x>' , '<STR_LIT:z>' : '<STR_LIT:x>' } ) <EOL> class TestCaffeFunctionAvailable ( unittest . TestCase ) : <EOL> @ unittest . skipUnless ( six . PY2 , '<STR_LIT>' ) <EOL> def test_py2_available ( self ) : <EOL> self . assertTrue ( links . caffe . caffe_function . available ) <EOL> @ unittest . skipUnless ( six . PY3 , '<STR_LIT>' ) <EOL> def test_py3_available ( self ) : <EOL> ws = pkg_resources . WorkingSet ( ) <EOL> try : <EOL> ws . require ( '<STR_LIT>' ) <EOL> ver = <NUM_LIT:2> <EOL> except pkg_resources . VersionConflict : <EOL> ver = <NUM_LIT:3> <EOL> if ver >= <NUM_LIT:3> : <EOL> self . assertTrue ( links . caffe . caffe_function . available ) <EOL> else : <EOL> self . assertFalse ( links . caffe . caffe_function . available ) <EOL> with self . assertRaises ( RuntimeError ) : <EOL> caffe . CaffeFunction ( '<STR_LIT>' ) <EOL> testing . run_module ( __name__ , __file__ ) </s>
