diff --git a/test/test_model_modules/test_advanced_paddings.py b/test/test_model_modules/test_advanced_paddings.py index 5282eb6df34d4d395dbbdd1fd76fd71a95e9c8df..bbeaf1c745a63b3607062b0c4052088c9af06b92 100644 --- a/test/test_model_modules/test_advanced_paddings.py +++ b/test/test_model_modules/test_advanced_paddings.py @@ -417,3 +417,61 @@ class TestSymmerticPadding2D: sym_pad = SymmetricPadding2D(padding=pad, name=layer_name)(input_x) assert sym_pad.get_shape().as_list() == [None, 12, 10, 3] assert sym_pad.name == 'SymPad_3x1/MirrorPad:0' + + +class TestPadding2D: + + @pytest.fixture + def input_x(self): + return keras.Input(shape=(32, 32, 3)) + + def test_init(self): + padding_layer = Padding2D('SymPad2D') + assert padding_layer.padding_type == 'SymPad2D' + assert padding_layer.allowed_paddings == { + 'RefPad2D': ReflectionPadding2D, 'ReflectionPadding2D': ReflectionPadding2D, + 'SymPad2D': SymmetricPadding2D, 'SymmetricPadding2D': SymmetricPadding2D, + 'ZeroPad2D': ZeroPadding2D, 'ZeroPadding2D': ZeroPadding2D + } + + + def test_check_and_get_padding_zero_padding(self): + assert Padding2D('ZeroPad2D')._check_and_get_padding() == ZeroPadding2D + assert Padding2D('ZeroPadding2D')._check_and_get_padding() == ZeroPadding2D + assert Padding2D(keras.layers.ZeroPadding2D)._check_and_get_padding() == ZeroPadding2D + + def test_check_and_get_padding_sym_padding(self): + assert Padding2D('SymPad2D')._check_and_get_padding() == SymmetricPadding2D + assert Padding2D('SymmetricPadding2D')._check_and_get_padding() == SymmetricPadding2D + assert Padding2D(SymmetricPadding2D)._check_and_get_padding() == SymmetricPadding2D + + def test_check_and_get_padding_ref_padding(self): + assert Padding2D('RefPad2D')._check_and_get_padding() == ReflectionPadding2D + assert Padding2D('ReflectionPadding2D')._check_and_get_padding() == ReflectionPadding2D + assert Padding2D(ReflectionPadding2D)._check_and_get_padding() == ReflectionPadding2D + + def test_check_and_get_padding_raises(self,): + with pytest.raises(NotImplementedError) as einfo: + Padding2D('FalsePadding2D')._check_and_get_padding() + assert "`'FalsePadding2D'' is not implemented as padding. " \ + "Use one of those: i) `RefPad2D', ii) `SymPad2D', iii) `ZeroPad2D'" in str(einfo.value) + with pytest.raises(TypeError) as einfo: + Padding2D(keras.layers.Conv2D)._check_and_get_padding() + assert "`Conv2D' is not a valid padding layer type. Use one of those: "\ + "i) ReflectionPadding2D, ii) SymmetricPadding2D, iii) ZeroPadding2D" in str(einfo.value) + + @pytest.mark.parametrize("pad_type", ["SymPad2D", "SymmetricPadding2D", SymmetricPadding2D, + "RefPad2D", "ReflectionPadding2D", ReflectionPadding2D, + "ZeroPad2D", "ZeroPadding2D", ZeroPadding2D]) + def test_call(self, pad_type, input_x): + pd = Padding2D(pad_type) + if hasattr(pad_type, "__name__"): + layer_name = pad_type.__name__ + else: + layer_name = pad_type + pd_ap = pd(padding=(1,2), name=f"{layer_name}_layer")(input_x) + assert pd_ap._keras_history[0].input_shape == (None, 32, 32, 3) + assert pd_ap._keras_history[0].output_shape == (None, 34, 36, 3) + assert pd_ap._keras_history[0].padding == ((1, 1), (2, 2)) + assert pd_ap._keras_history[0].name == f"{layer_name}_layer" + diff --git a/test/test_model_modules/test_inception_model.py b/test/test_model_modules/test_inception_model.py index 9dee30788c34cd8d1a7572947ea2e568ac2006b7..e5e92158425a73c5af1c6d1623d970e1037bbd80 100644 --- a/test/test_model_modules/test_inception_model.py +++ b/test/test_model_modules/test_inception_model.py @@ -277,48 +277,3 @@ class TestInceptionModelBase: bn = base.batch_normalisation(input_x)._keras_history[0] assert isinstance(bn, keras.layers.normalization.BatchNormalization) assert bn.name == "Block_0a_BN" - - def test_padding_layer_zero_padding(self, base, input_x): - padding_size = ((1, 1), (0, 0)) - zp = base.padding_layer('ZeroPad2D') - assert zp == keras.layers.convolutional.ZeroPadding2D - assert base.padding_layer('ZeroPadding2D') == keras.layers.convolutional.ZeroPadding2D - assert base.padding_layer(keras.layers.ZeroPadding2D) == keras.layers.convolutional.ZeroPadding2D - assert zp.__name__ == 'ZeroPadding2D' - zp_ap = zp(padding=padding_size)(input_x) - assert zp_ap._keras_history[0].padding == ((1, 1), (0, 0)) - - def test_padding_layer_sym_padding(self, base, input_x): - padding_size = ((1, 1), (0, 0)) - zp = base.padding_layer('SymPad2D') - assert zp == SymmetricPadding2D - assert base.padding_layer('SymmetricPadding2D') == SymmetricPadding2D - assert base.padding_layer(SymmetricPadding2D) == SymmetricPadding2D - assert zp.__name__ == 'SymmetricPadding2D' - zp_ap = zp(padding=padding_size)(input_x) - assert zp_ap._keras_history[0].padding == ((1, 1), (0, 0)) - - def test_padding_layer_ref_padding(self, base, input_x): - padding_size = ((1, 1), (0, 0)) - zp = base.padding_layer('RefPad2D') - assert zp == ReflectionPadding2D - assert base.padding_layer('ReflectionPadding2D') == ReflectionPadding2D - assert base.padding_layer(ReflectionPadding2D) == ReflectionPadding2D - assert zp.__name__ == 'ReflectionPadding2D' - zp_ap = zp(padding=padding_size)(input_x) - assert zp_ap._keras_history[0].padding == ((1, 1), (0, 0)) - - def test_padding_layer_raises(self, base, input_x): - with pytest.raises(NotImplementedError) as einfo: - base.padding_layer('FalsePadding2D') - assert "`'FalsePadding2D'' is not implemented as padding. " \ - "Use one of those: i) `RefPad2D', ii) `SymPad2D', iii) `ZeroPad2D'" in str(einfo.value) - with pytest.raises(TypeError) as einfo: - base.padding_layer(keras.layers.Conv2D) - assert "`Conv2D' is not a valid padding layer type. Use one of those: "\ - "i) ReflectionPadding2D, ii) SymmetricPadding2D, iii) ZeroPadding2D" in str(einfo.value) - - - - -