def test_sentiment_analysis(no_samples, sess): data_X, data_Y, cv_X, cv_Y, test_X, test_Y = get_dataset(all_globals.dataset_name, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) no_features = data_X.shape[1] print(data_X.shape, data_Y.shape) data_X, data_Y = data_X[:no_samples[0]], data_Y[:no_samples[0]] ##print(data_X.shape, data_Y.shape) print(np.unique(data_Y)) interpret_train = [] interpret_test = [] interpret_cv = [] for itera in range(3): model_B = ModelB(sess, all_globals.model_B_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_B, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale, no_features) model_A = ModelA(sess, all_globals.model_A_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_A, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale, no_features) model_B.init_model() #X_train, X_cross_validation, Y_train, Y_cross_validation = train_test_split(data_X, data_Y, test_size = 0.2, random_state = 42, stratify = data_Y) print("Iteration " + str(itera)) model_B.set_dataset(data_X, data_Y, test_X, test_Y, cv_X, cv_Y) model_B.train_model() ##print("Model B trained") model_A.set_dataset(data_X, data_Y, test_X, test_Y, cv_X, cv_Y) outp_train, outp_cv, outp_test = [], [], [] outp_train, outp_cv, outp_test = perform_interpretation(all_globals.mc_dropout, outp_train, outp_cv, outp_test, model_A, model_B) print("Train", find_average(outp_train)) print("CV", find_average(outp_cv)) print("Test", find_average(outp_test)) interpret_train.append(find_average(outp_train)) interpret_test.append(find_average(outp_test)) interpret_cv.append(find_average(outp_cv)) #tf.compat.v1.reset_default_graph() <-------- THIS DOESN'T WORK, gives error: AssertionError: Do not use tf.reset_default_graph() to clear nested graphs. If you need a cleared graph, exit the nesting and create a new graph. print("Final Interpretability on CV", find_average(interpret_cv)) print("Final interpretability on Train", find_average(interpret_train)) print("Final interpretability on Test", find_average(interpret_test))
def test_kfold_cross_validation_stanford40(): data_X, data_Y, test_X, test_Y, data_X_A, test_X_A = get_dataset( 'stanford40', all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) interpret_train = [] interpret_test = [] interpret_cv = [] for itera in range(3): kf = KFold(n_splits=all_globals.no_of_folds, shuffle=True, random_state=None) outp_train, outp_cv, outp_test = [], [], [] indices1 = list(kf.split(data_X)) for i in range(len(indices1)): model_B = ModelB(all_globals.model_B_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_B, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) model_A = ModelA(all_globals.model_A_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_A, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) model_B.init_model() print("Cross Validation fold " + str(i + 1)) #print("TRAIN INDEXES:", train_index, "CROSS_VALIDATION INDEXES:", cross_validation_index) train_index, cross_validation_index = indices1[i] X_train, X_cross_validation = data_X[train_index], data_X[ cross_validation_index] Y_train, Y_cross_validation = data_Y[train_index], data_Y[ cross_validation_index] model_B.set_dataset(X_train, Y_train, test_X, test_Y, X_cross_validation, Y_cross_validation) model_B.train_model() ##print("Model B trained") train_index, cross_validation_index = indices1[i] X_train_A, X_cross_validation_A = data_X_A[train_index], data_X_A[ cross_validation_index] Y_train_A, Y_cross_validation_A = data_Y[train_index], data_Y[ cross_validation_index] model_A.set_dataset(X_train_A, Y_train_A, test_X_A, test_Y, X_cross_validation_A, Y_cross_validation_A) outp_train, outp_cv, outp_test = perform_interpretation( all_globals.mc_dropout, outp_train, outp_cv, outp_test, model_A, model_B) print("Train", find_average(outp_train)) print("CV", find_average(outp_cv)) print("Test", find_average(outp_test)) interpret_train.append(find_average(outp_train)) interpret_test.append(find_average(outp_test)) interpret_cv.append(find_average(outp_cv)) print("Final Interpretability on CV", find_average(interpret_cv)) print("Final interpretability on Train", find_average(interpret_train)) print("Final interpretability on Test", find_average(interpret_test))
def interpretation_diff_frequencies(no_samples, sess): frequencies_list_width = [10] data_X, data_Y, test_X, test_Y = get_dataset(all_globals.dataset_name, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) data_X, data_Y = data_X[:no_samples[0]], data_Y[:no_samples[0]] for width in frequencies_list_width: print("Width: " + str(width) + "\n") high_interpret_train, high_interpret_test, high_interpret_cv = [], [], [] low_interpret_train, low_interpret_test, low_interpret_cv = [], [], [] for itera in range(3): kf = KFold(n_splits=all_globals.no_of_folds, shuffle = True) i = 1 high_outp_train, high_outp_cv, high_outp_test = [], [], [] low_outp_train, low_outp_cv, low_outp_test = [], [], [] for train_index, cross_validation_index in kf.split(data_X): model_B = ModelB(sess, all_globals.model_B_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_B, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) model_A = ModelA(sess, all_globals.model_A_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_A, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) model_B.init_model() print("Cross Validation fold " + str(i)) X_train, X_cross_validation = data_X[train_index], data_X[cross_validation_index] Y_train, Y_cross_validation = data_Y[train_index], data_Y[cross_validation_index] high_freq_train, low_freq_train = get_frequency_components_dataset(X_train, width) high_freq_test, low_freq_test = get_frequency_components_dataset(test_X, width) high_freq_cv, low_freq_cv = get_frequency_components_dataset(X_cross_validation, width) model_B.set_dataset(X_train, Y_train, test_X, test_Y, X_cross_validation, Y_cross_validation) model_B.train_model() ##print("Model B trained") model_A.set_dataset(high_freq_train, Y_train, high_freq_test, test_Y, high_freq_cv, Y_cross_validation) high_outp_train, high_outp_cv, high_outp_test = perform_interpretation(all_globals.mc_dropout, high_outp_train, high_outp_cv, high_outp_test) model_A.set_dataset(low_freq_train, Y_train, low_freq_test, test_Y, low_freq_cv, Y_cross_validation) low_outp_train, low_outp_cv, low_outp_test = perform_interpretation(all_globals.mc_dropout, low_outp_train, low_outp_cv, low_outp_test, model_A, model_B) i = i + 1 print("High_Freq:\nTrain: " + str(find_average(high_outp_train)) + "\nCV: " + str(find_average(high_outp_cv)) + "\nTest: " + str(find_average(high_outp_test))) print("Low_Freq:\nTrain: " + str(find_average(low_outp_train)) + "\nCV: " + str(find_average(low_outp_cv)) + "\nTest: " + str(find_average(low_outp_test))) high_interpret_train.append(find_average(high_outp_train)) high_interpret_test.append(find_average(high_outp_test)) high_interpret_cv.append(find_average(high_outp_cv)) low_interpret_train.append(find_average(low_outp_train)) low_interpret_test.append(find_average(low_outp_test)) low_interpret_cv.append(find_average(low_outp_cv)) print("Final Values\nTrain: " + str(find_average(high_interpret_train)) + "\nCV: " + str(find_average(high_interpret_cv)) + "\nTest: " + str(find_average(high_interpret_test))) print("Final Values\nTrain: " + str(find_average(low_interpret_train)) + "\nCV: " + str(find_average(low_interpret_cv)) + "\nTest: " + str(find_average(low_interpret_test)))
def test_cross_validation(no_samples): data_X, data_Y, test_X, test_Y = get_dataset(all_globals.dataset_name, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) data_X, data_Y = data_X[:no_samples[0]], data_Y[:no_samples[0]] interpret_train = [] interpret_test = [] interpret_cv = [] for itera in range(3): model_B = ModelB(all_globals.model_B_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_B, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) model_A = ModelA(all_globals.model_A_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_A, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) model_B.init_model() X_train, X_cross_validation, Y_train, Y_cross_validation = train_test_split( data_X, data_Y, test_size=0.2, random_state=42, stratify=data_Y) print("Iteration " + str(itera)) model_B.set_dataset(X_train, Y_train, test_X, test_Y, X_cross_validation, Y_cross_validation) model_B.train_model() ##print("Model B trained") model_A.set_dataset(X_train, Y_train, test_X, test_Y, X_cross_validation, Y_cross_validation) outp_train, outp_cv, outp_test = [], [], [] outp_train, outp_cv, outp_test = perform_interpretation( all_globals.mc_dropout, outp_train, outp_cv, outp_test, model_A, model_B) print("Train", find_average(outp_train)) print("CV", find_average(outp_cv)) print("Test", find_average(outp_test)) interpret_train.append(find_average(outp_train)) interpret_test.append(find_average(outp_test)) interpret_cv.append(find_average(outp_cv)) print("Final Interpretability on CV", find_average(interpret_cv)) print("Final interpretability on Train", find_average(interpret_train)) print("Final interpretability on Test", find_average(interpret_test))
def test_kfold_cross_validation(no_samples, sess): data_X, data_Y, test_X, test_Y = get_dataset(all_globals.dataset_name, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) print(data_X.shape, data_Y.shape) data_X, data_Y = data_X[:no_samples[0]], data_Y[:no_samples[0]] ##print(data_X.shape, data_Y.shape) print(np.unique(data_Y)) final_train, final_cv, final_test = [], [], [] interpret_train = [] interpret_test = [] interpret_cv = [] for itera in range(2): print("Iteration" + str(itera)) kf = KFold(n_splits=all_globals.no_of_folds, shuffle = True, random_state = None) i = 1 outp_train, outp_cv, outp_test = [], [], [] for train_index, cross_validation_index in kf.split(data_X): print("Cross Validation fold " + str(i)) #print("TRAIN INDEXES:", train_index, "CROSS_VALIDATION INDEXES:", cross_validation_index) model_B = ModelB(sess, all_globals.model_B_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_B, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) model_A = ModelA(sess, all_globals.model_A_epochs, all_globals.batch_size, all_globals.dataset_name, all_globals.learning_rate, all_globals.model_name_A, all_globals.is_binarized, all_globals.is_resized, all_globals.is_grayscale) model_B.init_model() X_train, X_cross_validation = data_X[train_index], data_X[cross_validation_index] Y_train, Y_cross_validation = data_Y[train_index], data_Y[cross_validation_index] model_B.set_dataset(X_train, Y_train, test_X, test_Y, X_cross_validation, Y_cross_validation) model_B.train_model() ##print("Model B trained") model_A.set_dataset(X_train, Y_train, test_X, test_Y, X_cross_validation, Y_cross_validation) outp_train, outp_cv, outp_test = perform_interpretation(all_globals.mc_dropout, outp_train, outp_cv, outp_test, model_A, model_B) i = i + 1 print("Train ", find_average(outp_train)) print("CV ", find_average(outp_cv)) print("Test ", find_average(outp_test)) final_train.extend(outp_train) final_cv.extend(outp_cv) final_test.extend(outp_test) final_train.append(find_average(outp_train)) final_cv.append(find_average(outp_cv)) final_test.append(find_average(outp_test)) #print_to_file(find_average(outp_train), find_average(outp_cv), find_average(outp_test)) interpret_train.append(find_average(outp_train)) interpret_test.append(find_average(outp_test)) interpret_cv.append(find_average(outp_cv)) print("Final Interpretability on CV", find_average(interpret_cv)) print("Final interpretability on Train", find_average(interpret_train)) print("Final interpretability on Test", find_average(interpret_test)) final_train.append(find_average(interpret_train)) final_cv.append(find_average(interpret_cv)) final_test.append(find_average(interpret_test)) print(final_train) print(final_cv) print(final_test)