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
Branches
Tags
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 register or to comment