def pretrain_model(): model =Xception(include_top = False, weights = "imagenet",input_shape = (71,71,3)) x=model.output x=GlobalAveragePooling2D()(x) x=Dense(512,activation='relu')(x) x = Dropout(0.8)(x) x= Dense(256,activation='relu')(x) x = Dropout(0.8)(x) y=Dense(10,activation='softmax')(x) model = Model(inputs = model.input, outputs =y) for layer in model.layers[:30]: layer.trainable = False if layer.name.startswith('batch_normalization'): layer.trainable = True for layer in model.layers[30:]: layer.trainable = True #if layer.name.startswith('batch_normalization'): # layer.trainable = True model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=["accuracy"]) return model
def get_kernel(params): model = Xception(weights=None) optimizer = SGD() model.compile( loss="sparse_categorical_crossentropy", optimizer=optimizer, metrics=["accuracy"], ) return model
def create_model(self): img_input_layer = tf.keras.layers.Input(self.img_input_dim, name="img_input") ann_input_layer = tf.keras.layers.Input(self.ann_input_dim, name="ann_input") ## Uncomment lines according to model type # If training Xception, use first line. If training InceptionResNetV2, use second line, etc. model = Xception(input_tensor=img_input_layer, include_top=False, weights='imagenet') # model = InceptionResNetV2(input_tensor=img_input_layer, include_top=False, weights='imagenet') # model = EfficientNetB3(input_tensor=img_input_layer, include_top=False, weights='imagenet') x = model(img_input_layer) # output layers x1 = tf.keras.layers.GlobalAveragePooling2D()(x) x2 = tf.keras.layers.GlobalMaxPooling2D()(x) x3 = tf.keras.layers.Flatten()(x) # Annot model embed = tf.keras.layers.Embedding(126964, 64, input_length=self.ann_input_dim[0]) m = embed(ann_input_layer) m = tf.keras.layers.Flatten()(m) out = tf.keras.layers.Concatenate(axis=-1)([x1, x2, x3, m]) out = tf.keras.layers.Dropout(0.3)(out) output_layer = tf.keras.layers.Dense(self.n_classes, activation='softmax')(out) model = tf.keras.models.Model( inputs=[img_input_layer, ann_input_layer], outputs=output_layer) model.compile(optimizer=tf.keras.optimizers.Adam(), loss="categorical_crossentropy", metrics=['acc']) return model
def create_model(self): input_layer = tf.keras.layers.Input(self.input_dim) ## Uncomment lines according to model type ## If training Xception, use first line. If training InceptionResNetV2, use second line, etc. model = Xception(input_tensor=input_layer, include_top=False, weights='imagenet') # model = InceptionResNetV2(input_tensor=input_layer, include_top=False, weights='imagenet') x = model(input_layer) # output layers x1 = tf.keras.layers.GlobalAveragePooling2D()(x) x2 = tf.keras.layers.GlobalMaxPooling2D()(x) x3 = tf.keras.layers.Flatten()(x) out = tf.keras.layers.Concatenate(axis=-1)([x1, x2, x3]) out = tf.keras.layers.Dropout(0.3)(out) output_layer = tf.keras.layers.Dense(self.n_classes, activation='softmax')(out) model = tf.keras.models.Model(inputs=input_layer, outputs=output_layer) model.compile(optimizer=tf.keras.optimizers.Adam(), loss="categorical_crossentropy", metrics=['acc']) return model
dogs_model = InceptionV3(weights=None, classes=dogs_num_of_classes) cats_model = InceptionV3(weights=None, classes=cats_num_of_classes) elif model_name == 'inception_resnet_v2': binary_model = InceptionResNetV2(weights=None, classes=num_of_classes) dogs_model = InceptionResNetV2(weights=None, classes=dogs_num_of_classes) cats_model = InceptionResNetV2(weights=None, classes=cats_num_of_classes) elif model_name == 'xception': binary_model = Xception(weights=None, classes=num_of_classes) dogs_model = Xception(weights=None, classes=dogs_num_of_classes) cats_model = Xception(weights=None, classes=cats_num_of_classes) else: raise ValueError(f"not supported model name {model_name}") """MODEL PARAMS AND CALLBACKS""" # binary model # binary_model.compile(optimizer='adam', loss='BinaryCrossentropy', metrics=['accuracy']) binary_checkpoint = ModelCheckpoint( filepath=f'advanced_weights_binary_{model_name}.hdf5', save_best_only=True, verbose=1) binary_early_stopping = EarlyStopping(monitor='val_accuracy', patience=10, verbose=1) binary_reduce_lr = ReduceLROnPlateau(patience=5, verbose=1) # dogs model # dogs_model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) dogs_checkpoint = ModelCheckpoint(
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=0, save_best_only=True, mode='max') # Log the epoch detail into csv csv_logger = CSVLogger(os.path.join(output_folder, modelname + '.csv')) callbacks_list = [checkpoint, csv_logger] # define model model = Xception(include_top=True, input_shape=(IMG_SIZE, IMG_SIZE, 3), weights=None, classes=4) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.summary() from tensorflow.keras.utils import plot_model model_file = os.path.join(output_folder, modelname + "_model.png") plot_model(model, to_file=model_file, show_shapes=True, show_layer_names=False, rankdir='TB') # fit model model.fit_generator(train_it, validation_data=val_it, epochs=50,