Skip to content
Snippets Groups Projects
Commit 2e7fc27b authored by Felix Kleinert's avatar Felix Kleinert
Browse files

update tests for Padding2D

parent 7d591f15
No related branches found
No related tags found
3 merge requests!90WIP: new release update,!89Resolve "release branch / CI on gpu",!69Felix issue077 feat model like in paper
Pipeline #31760 passed
......@@ -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"
......@@ -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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment