|
|
|
|
|
|
|
|
|
|
|
import tensorflow as tf
|
|
|
|
|
|
import numpy as np
|
|
|
|
|
|
import pandas as pd
|
|
|
|
|
|
from pylab import rcParams
|
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
import warnings
|
|
|
|
|
|
from mlxtend.plotting import plot_decision_regions
|
|
|
|
|
|
from matplotlib.colors import ListedColormap
|
|
|
|
|
|
from tensorflow.keras.models import Sequential
|
|
|
|
|
|
from tensorflow.keras.layers import Dense
|
|
|
|
|
|
from sklearn.model_selection import train_test_split
|
|
|
|
|
|
from group_lasso import BaseGroupLasso, GroupLasso
|
|
|
|
|
|
from tensorflow import keras
|
|
|
|
|
|
import math
|
|
|
|
|
|
#using https://github.com/yngvem/group-lasso/
|
|
|
|
|
|
warnings.filterwarnings('ignore')
|
|
|
|
|
|
|
|
|
|
|
|
nd_path = ['nds/allnds_case.txt', 'nds/allnds_control.txt']
|
|
|
|
|
|
|
|
|
|
|
|
X, y = load_dataset(nd_path)
|
|
|
|
|
|
#https://github.com/bhattbhavesh91/regularization-neural-networks/blob/master/regularization-notebook.ipynb
|
|
|
|
|
|
X_train, X_test, y_train, y_test = train_test_split(X, y,
|
|
|
|
|
|
test_size=0.33,
|
|
|
|
|
|
random_state=42)
|
|
|
|
|
|
reg_model = Sequential()
|
|
|
|
|
|
reg_model.add(Dense(math.sqrt(X_train.shape[1]), input_dim= X_train.shape[1], activation='relu'))
|
|
|
|
|
|
reg_model.add(Dense(1, activation='sigmoid'))
|
|
|
|
|
|
reg_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
|
|
|
|
|
|
reg_history = reg_model.fit(X_train, y_train,
|
|
|
|
|
|
validation_data=(X_test, y_test),
|
|
|
|
|
|
epochs=4000, verbose=1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# serialize model to JSON
|
|
|
|
|
|
model_json = model.to_json()
|
|
|
|
|
|
with open('model.json', 'w') as json_file:
|
|
|
|
|
|
json_file.write(model_json)
|
|
|
|
|
|
# serialize weights to HDF5
|
|
|
|
|
|
model.save_weights('model.h5')
|
|
|
|
|
|
print('Saved model to disk')
|
|
|
|
|
|
|
|
|
|
|
|
# load json and create model
|
|
|
|
|
|
json_file = open('model.json', 'r')
|
|
|
|
|
|
loaded_model_json = json_file.read()
|
|
|
|
|
|
json_file.close()
|
|
|
|
|
|
loaded_model = model_from_json(loaded_model_json)
|
|
|
|
|
|
# load weights into new model
|
|
|
|
|
|
loaded_model.load_weights("model.h5")
|
|
|
|
|
|
print("Loaded model from disk")
|
|
|
|
|
|
|
|
|
|
|
|
# evaluate loaded model on test data
|
|
|
|
|
|
# loaded_model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
|
|
|
|
|
|
|
|
|
|
|
|
asd_path = ['nds/asd_case.txt', 'nds/asd_control.txt']
|
|
|
|
|
|
|
|
|
|
|
|
X, y = load_dataset(asd_path)
|
|
|
|
|
|
#https://github.com/bhattbhavesh91/regularization-neural-networks/blob/master/regularization-notebook.ipynb
|
|
|
|
|
|
X_train, X_test, y_train, y_test = train_test_split(X, y,
|
|
|
|
|
|
test_size=0.33,
|
|
|
|
|
|
random_state=42)
|
|
|
|
|
|
reg_model = Sequential()
|
|
|
|
|
|
model.layers[0].set_weights(loaded_model[0])
|
|
|
|
|
|
reg_model.add(Dense(math.sqrt(X_train.shape[1]), input_dim= X_train.shape[1], activation='relu', kernel_regularizer='group_lasso'))
|
|
|
|
|
|
reg_model.add(Dense(1, activation='ReLU'))
|
|
|
|
|
|
reg_model.add(Dense(1, activation='sigmoid'))
|
|
|
|
|
|
reg_model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
|
|
|
|
|
|
reg_history = reg_model.fit(X_train, y_train,
|
|
|
|
|
|
validation_data=(X_test, y_test),
|
|
|
|
|
|
epochs=4000, verbose=1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
model = keras.models.load_model('path/to/saved/model')
|
|
|
|
|
|
weights = model.get_layer('input').get_weights()
|
|
|
|
|
|
|
|
|
|
|
|
values = weights[0]
|
|
|
|
|
|
for indx, v in enumerate(values):
|
|
|
|
|
|
if v!=0:
|
|
|
|
|
|
print('nonzero input', indx)
|