def test_coupled_weights_of_backbone(): """ This function will fail because there are multiple models defined in the keras/tensorflow graph which are not used during training. Returns: bool -- [description] """ data = mnist_data() backbone = ResNet() preds = backbone(data.get_test()[0]) gen = ResGen(backbone) input_shape = gen.get_input_shape() rand_data_shape = ((50, ) + input_shape[1:] + (1, )) random_noise_data = np.random.normal(size=rand_data_shape) discriminator = Discriminator(backbone) classifier = Classifier(backbone, 10) discriminator_predicitons_1 = discriminator(data.get_test()[0]) classifier_predicitons_1 = classifier.predict(data.get_test()[0]) generator_predictions_1 = gen.predict(random_noise_data)[0] classifier.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) classifier.summary() # classifier.fit(x=x_train,y=y_train,batch_size=6000,epochs=1, validation_data=(x_vali,y_vali),callbacks=[checkpoint]) classifier.fit(x=data.get_n_samples(35)[0], y=data.get_n_samples(35)[1], batch_size=6000, epochs=1, validation_data=data.get_vali()) discriminator_predicitons_2 = discriminator(data.get_test()[0]) classifier_predicitons_2 = classifier.predict(data.get_test()[0]) generator_predictions_2 = gen.predict(random_noise_data)[0] discriminator_diff = discriminator_predicitons_1 - discriminator_predicitons_2 classifier_diff = classifier_predicitons_1 - classifier_predicitons_2 generator_diff = generator_predicitons_1 - generator_predicitons_2 return True
def run(dataset, data_path, model_type, generations, populations): (df, features, label, categorical_features, sensitive_features) = prepare_data(dataset, data_path) X, y = process_categorical(df, features, label, categorical_features) (X_train, X_test, y_train, y_test) = prepare_data_split(X, y) # split_func = split_on_sensitive_attr(X_train) model = Classifier( dataset, model_type, X_train, y_train, X_test, y_test, features, sensitive_features, ) model.fit() nsga_cfg = NSGAConfig( generations=generations, populations=populations, model_type=model_type, X_sensitive_a1=model.X_m, ) X_m = model.X_m X_f = model.X_f y_m = model.y_m y_f = model.y_f X_test_m = model.X_test_m X_test_f = model.X_test_f y_test_m = model.y_test_m y_test_f = model.y_test_f try: run_nsga(nsga_cfg) except Exception as e: pass
def train_classifier_depricated(tpu=False): scope = strategy.scope() print("Number of accelerators: ", strategy.num_replicas_in_sync) data = mnist_data() backbone = ResNet() discriminator = Discriminator(backbone) classifier = Classifier(backbone, 10) preds = classifier.predict(data.get_test()[0]) classifier.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) classifier.summary() if (tpu): classifier = convert_model_for_tpu(classifier) checkpoint = keras.callbacks.ModelCheckpoint( './checkpoints/classifier/classifier_{epoch:.2f}.h5', monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=True) # classifier.fit(x=x_train,y=y_train,batch_size=6000,epochs=1, validation_data=(x_vali,y_vali),callbacks=[checkpoint]) classifier.fit(x=data.get_n_samples(35)[0], y=data.get_n_samples(35)[1], batch_size=6000, epochs=20, validation_data=data.get_vali(), callbacks=[checkpoint]) # import pdb; pdb.set_trace() # breakpoint 396fe169 // backbone = classifier.get_backbone() backbone.save_weights('backbone_weights.h5') return (classifier, x_test)
from models import Classifier import pickle model_path = './models/model7.hd5' # load dataset with open('./datasets/80k_no_priorityroad_grey.pickle', 'rb') as f: (x_train, y_train), (x_val, y_val), (x_test, y_test) = pickle.load(f) if __name__ == '__main__': # make model model = Classifier() model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # train model model.fit(x_train, y_train, epochs=5, batch_size=32, validation_data=(x_val, y_val)) # test model model.evaluate(x_test, y_test) # save model model.save(model_path) print('MODEL SAVED')