Exemplo n.º 1
0
    def bins_vgg16(self, opt=1, loss=0):
        initial_model = self.__load_vgg16__()
        outputs = []

        if (opt == 1):
            preds = layers.Flatten()(initial_model.output)
            preds.set_shape((None, 25088))

            for i in range(c.N_PROPS):
                outputs.append(
                    layers.Dense(c.N_BINS + 1,
                                 activation='softmax',
                                 input_shape=(None, 25088),
                                 trainable=True)(preds))

        elif (opt == 2):
            for i in range(c.N_PROPS):
                preds = Conv2D(30,
                               5,
                               strides=(1, 1),
                               padding='valid',
                               data_format='channels_last')(
                                   initial_model.output)
                preds = Activation('tanh')(preds)
                preds = SpatialDropout2D(0.4)(preds)
                preds = Flatten()(preds)
                preds.set_shape((None, 1470))
                outputs.append(preds)
        else:
            for i in range(c.N_PROPS):
                preds = Conv2D(30,
                               5,
                               strides=(1, 1),
                               padding='valid',
                               data_format='channels_last')(
                                   initial_model.output)
                preds = Activation('tanh')(preds)
                preds = Conv2D(16,
                               3,
                               strides=(1, 1),
                               padding='valid',
                               data_format='channels_last')(preds)
                preds = SpatialDropout2D(0.4)(preds)
                preds = Flatten()(preds)
                preds.set_shape((None, 1296))
                outputs.append(preds)
        model = keras.Model(initial_model.input, outputs)

        # Compile the model

        if (loss == 1):
            model.compile(loss='categorical_crossentropy',
                          optimizer='adam',
                          metrics=['accuracy'])
        else:
            model.compile(loss=OCC.loss,
                          optimizer='adam',
                          metrics=['accuracy', m.bins_mean_squared_error])

        return model
Exemplo n.º 2
0
    def vgg16_v3(self):
        initial_model = self.__load_vgg16__()
        preds = Conv2D(30,
                       5,
                       strides=(1, 1),
                       padding='valid',
                       data_format='channels_last')(initial_model.output)
        preds = Activation('tanh')(preds)
        preds = Conv2D(16,
                       3,
                       strides=(1, 1),
                       padding='valid',
                       data_format='channels_last')(preds)
        preds = SpatialDropout2D(0.4)(preds)
        preds = Flatten()(preds)
        preds.set_shape((None, 1296))
        preds = Dense(10,
                      activation='sigmoid',
                      input_shape=(None, 1296),
                      trainable=True)(preds)

        model = keras.Model(initial_model.input, preds)

        model.compile(loss='mean_squared_error',
                      optimizer='adam',
                      metrics=['accuracy'])
        return model