def build(self, input_shape, classes=10): filters = 16 inputs = keras.Input(shape=input_shape) outputs = batch_normalization()(inputs) outputs = relu()(outputs) outputs = conv2d(filters=filters, kernel_size=(3, 3))(outputs) filters = filters * self.widening for i in range(3): for j in range(self.blocks): down_sampling = True if (i > 0 and j == 0) else False outputs = self.residual(outputs, filters=filters, down_sampling=down_sampling) filters = 2 * filters outputs = batch_normalization()(outputs) outputs = relu()(outputs) outputs = average_pooling2d(pool_size=(8, 8))(outputs) outputs = dense(10)(outputs) outputs = softmax()(outputs) model = keras.Model(inputs, outputs) model.summary() return model
def classifier_main(self, inputs, classes): outputs = average_pooling2d(pool_size=(7, 7), strides=1, padding='valid')(inputs) outputs = flatten()(outputs) outputs = dropout(0.4)(outputs) outputs = dense(classes)(outputs) outputs = softmax()(outputs) return outputs
def transition_block(self, inputs): filters = keras.backend.int_shape(inputs)[ self.batch_normalization_axis] if self.compression: filters = int(filters * (1 - self.reduction_rate)) outputs = batch_normalization()(inputs) outputs = relu()(outputs) outputs = conv2d(filters=filters, kernel_size=(1, 1))(outputs) outputs = average_pooling2d(pool_size=(2, 2), strides=2)(outputs) return outputs
def classifier_aux(self, inputs, classes): filters = 128 outputs = average_pooling2d(pool_size=(5, 5), strides=3, padding='valid')(inputs) outputs = conv2d(filters=filters, kernel_size=(1, 1), strides=1, padding='same')(outputs) outputs = flatten()(outputs) outputs = relu()(outputs) outputs = dense(1024)(outputs) outputs = relu()(outputs) outputs = dropout(0.7)(outputs) outputs = dense(classes)(outputs) outputs = softmax()(outputs) return outputs
def __init__( self, blocks, filters, bottleneck=False, input_layers=[ batch_normalization(), relu(), conv2d(filters=64, kernel_size=(7, 7), strides=2), ], output_layers=[average_pooling2d(pool_size=(2, 2)), flatten()]): self.blocks = blocks self.filters = filters self.bottleneck = bottleneck self.bn_axis = -1 if keras.backend.image_data_format( ) == 'channels_last' else 1 self.input_layers = input_layers self.output_layer = output_layers
def __init__(self, input_layers=None, outputs_layers=None, inception_layers=None): self.inception_version = 1 if input_layers is None: self.input_layers = [ conv2d(filters=64, kernel_size=(7, 7), strides=2, padding='same'), max_pooling2d(pool_size=(3, 3), strides=2, padding='same'), batch_normalization(), conv2d(filters=192, kernel_size=(1, 1), strides=1, padding='valid'), conv2d(filters=192, kernel_size=(3, 3), strides=1, padding='same'), batch_normalization(), max_pooling2d(pool_size=(3, 3), strides=2, padding='same') ] else: self.input_layers = input_layers if outputs_layers is None: self.output_layers = [ average_pooling2d(pool_size=(7, 7), strides=1, padding='valid'), flatten(), dropout(0.4), dense(1000), softmax() ] else: self.output_layers = outputs_layers