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
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