def trainFromScratch_MobileNet(): from time import time from keras.callbacks import TensorBoard tensorboard = TensorBoard(log_dir="logs/resnet_CosmeticsBrands/{}".format( time()), histogram_freq=0, write_graph=True, write_images=True) checkPoint = ModelCheckpoint(filepath='weights/ah_mobile_2cats.h5', save_best_only=True) model = MobileNet(weights="imagenet", include_top=False, input_shape=(image_size, image_size, 3)) genterator_training = ImageDataGenerator( rescale=1. / 255, #rotation_range=0.4, #shear_range=0.2, #zoom_range=0.1, #width_shift_range=0.1, #height_shift_range=0.1, vertical_flip=True, horizontal_flip=True) augmented_training = genterator_training.flow_from_directory( train_data, target_size=(image_size, image_size), class_mode="categorical", shuffle=False, batch_size=batch_size) generator_test = ImageDataGenerator(rescale=1. / 255) augmented_testing = generator_test.flow_from_directory( test_data, target_size=(image_size, image_size), class_mode="categorical", batch_size=batch_size, shuffle=False) # optimizer_1 = RMSprop(lr=0.0005) # optimizer_2 = Adagrad() # model.compile(optimizer_1, loss='categorical_crossentropy', metrics=["accuracy"]) training_bottleneck_features = model.predict_generator( augmented_training, steps=training_instances // batch_size) np.save(open('weights/ah_trainig_bottleneck.npy', 'w'), training_bottleneck_features) testing_bottleneck_features = model.predict_generator( augmented_testing, steps=test_instances // batch_size) np.save(open('weights/ah_testing_bottleneck.npy', 'w'), testing_bottleneck_features)
def mobile(X_train, Y_train): conv_base = MobileNet(weights='imagenet', include_top=False, input_shape=(128, 128, 3)) samples_generator = DataGenerator(X_train, Y_train, **params) test_features = conv_base.predict_generator(samples_generator, verbose=True) return test_features
history_list = [] for i in range(len(Train_indices)): print(i) print('Done1') # Need to get the correct samples for the training and val sets X_train = [Trainval_ids[j] for j in Train_indices[i]] Y_train = [Trainval_labels[j] for j in Train_indices[i]] X_val = [Trainval_ids[j] for j in Val_indices[i]] Y_val = [Trainval_labels[j] for j in Val_indices[i]] print('Done2') conv_base = MobileNet(weights='imagenet', include_top=False, input_shape=(128, 128, 3)) train_generator = DataGenerator(X_train, Y_train, **params) X_train = conv_base.predict_generator(train_generator, verbose=True) print('Done3') val_generator = DataGenerator(X_val, Y_val, **params) X_val = conv_base.predict_generator(val_generator, verbose=True) Y_train = [Trainval_labels[j] for j in Train_indices[i]] Y_val = [Trainval_labels[j] for j in Val_indices[i]] # Need to have the same amount of labels as X_train and X_val, as theyre done in batches of 25: rem1 = len(Y_train) % 25 if not rem1 == 0: Y_train = Y_train[:-rem1][:] rem2 = len(Y_val) % 25 if not rem2 == 0: Y_val = Y_val[:-rem2][:] print(X_train.shape)