Skip to content
Snippets Groups Projects
Commit 6dfb12ea authored by l.leufen's avatar l.leufen
Browse files

added first tests for inception model

parent b037ffcf
No related branches found
No related tags found
2 merge requests!6updated inception model and data prep class,!3updated inception model
Keras==2.2.4
numpy==1.15.4
tensorflow==1.12.0
pytest==5.2.1
\ No newline at end of file
import pytest
from src.inception_model import InceptionModelBase
import keras
import tensorflow as tf
class TestInceptionModelBase:
@pytest.fixture
def base(self):
return InceptionModelBase()
@pytest.fixture
def input_x(self):
return keras.Input(shape=(32, 32, 3))
def test_init(self, base):
assert base.number_of_blocks == 0
assert base.part_of_block == 0
assert base.ord_base == 96
def test_block_part_name(self, base):
assert base.block_part_name() == chr(96)
base.part_of_block += 1
assert base.block_part_name() == 'a'
def test_create_conv_tower_3x3(self, base, input_x):
opts = {'input_X': input_x, 'reduction_filter': 64, 'tower_filter': 32, 'tower_kernel': (3, 3)}
tower = base.create_conv_tower(**opts)
# check second element of tower
assert base.part_of_block == 1
assert isinstance(tower, tf.Tensor)
assert tower.name == 'Block_0a_3x3/Relu:0'
assert isinstance(tower._keras_history[0], keras.layers.Conv2D)
assert tower._keras_history[0].filters == 32
assert isinstance(tower._keras_history[0].input, tf.Tensor)
assert tower._keras_history[0].padding == 'same'
assert tower._keras_history[0].kernel_size == (3, 3)
assert tower._keras_history[0].strides == (1, 1)
# check first element of tower
assert isinstance(tower._keras_history[0].input._keras_history[0], keras.layers.Conv2D)
assert tower._keras_history[0].input._keras_history[0].filters == 64
assert tower._keras_history[0].input._keras_history[0].kernel_size == (1, 1)
assert tower._keras_history[0].input._keras_history[0].padding == 'same'
assert tower._keras_history[0].input._keras_history[0].name == 'Block_0a_1x1'
assert tower._keras_history[0].input._keras_history[0].input._keras_shape == (None, 32, 32, 3)
def test_create_conv_tower_1x1(self, base, input_x):
opts = {'input_X': input_x, 'reduction_filter': 64, 'tower_filter': 32, 'tower_kernel': (1, 1)}
tower = base.create_conv_tower(**opts)
# check second element of tower
assert base.part_of_block == 1
assert isinstance(tower, tf.Tensor)
assert tower.name == 'Block_0a_1x1_1/Relu:0'
assert isinstance(tower._keras_history[0], keras.layers.Conv2D)
assert tower._keras_history[0].filters == 32
assert isinstance(tower._keras_history[0].input, tf.Tensor)
assert tower._keras_history[0].input._keras_shape == (None, 32, 32, 3)
assert tower._keras_history[0].padding == 'same'
assert tower._keras_history[0].kernel_size == (1, 1)
assert tower._keras_history[0].strides == (1, 1)
def test_create_conv_towers(self, base, input_x):
opts = {'input_X': input_x, 'reduction_filter': 64, 'tower_filter': 32, 'tower_kernel': (3, 3)}
_ = base.create_conv_tower(**opts)
tower = base.create_conv_tower(**opts)
assert base.part_of_block == 2
assert tower.name == 'Block_0b_3x3/Relu:0'
def test_create_pool_tower(self, base, input_x):
opts = {'input_X': input_x, 'pool_kernel': (3, 3), 'tower_filter': 32}
tower = base.create_pool_tower(**opts)
# check second element of tower
assert base.part_of_block == 0
assert isinstance(tower, tf.Tensor)
assert tower.name == 'conv2d_1/Relu:0'
assert isinstance(tower._keras_history[0], keras.layers.Conv2D)
assert tower._keras_history[0].filters == 32
assert tower._keras_history[0].padding == 'same'
assert tower._keras_history[0].kernel_size == (1, 1)
assert tower._keras_history[0].strides == (1, 1)
# check first element of tower
assert isinstance(tower._keras_history[0].input, tf.Tensor)
assert tower._keras_history[0].input._keras_history[0].pool_size == (3, 3)
assert tower._keras_history[0].input._keras_history[0].padding == 'same'
assert tower._keras_history[0].input._keras_history[0].name == 'max_pooling2d_1'
def test_inception_block(self, base, input_x):
conv = {'tower_1': {'reduction_filter': 64, 'tower_kernel': (3, 3), 'tower_filter': 64},
'tower_2': {'reduction_filter': 64, 'tower_kernel': (5, 5), 'tower_filter': 64}}
pool = {'pool_kernel': (3, 3), 'tower_filter': 64}
opts = {'input_X': input_x, 'tower_conv_parts': conv, 'tower_pool_parts': pool}
block = base.inception_block(**opts)
assert base.number_of_blocks == 1
concatenated = block._keras_history[0].input
assert len(concatenated) == 3
block_1a, block_1b, block_pool = concatenated
assert block_1a.name == 'Block_1a_3x3/Relu:0'
assert block_1b.name == 'Block_1b_5x5/Relu:0'
assert block_pool.name == 'conv2d_2/Relu:0'
# next block
opts['input_X'] = block
block = base.inception_block(**opts)
assert base.number_of_blocks == 2
concatenated = block._keras_history[0].input
assert len(concatenated) == 3
block_1a, block_1b, block_pool = concatenated
assert block_1a.name == 'Block_2a_3x3/Relu:0'
assert block_1b.name == 'Block_2b_5x5/Relu:0'
assert block_pool.name == 'conv2d_3/Relu:0'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment