예제 #1
0
파일: ResNet.py 프로젝트: iiharu/NN
    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
예제 #2
0
파일: GoogLeNet.py 프로젝트: iiharu/NN
    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
예제 #3
0
파일: DenseNet.py 프로젝트: iiharu/NN
    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
예제 #4
0
파일: GoogLeNet.py 프로젝트: iiharu/NN
    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
예제 #5
0
파일: ResNet.py 프로젝트: iiharu/NN
 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
예제 #6
0
파일: GoogLeNet.py 프로젝트: iiharu/NN
    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