Changed neural network model to be sklearn based

This commit is contained in:
Hunter Nichols 2021-06-07 12:26:45 -07:00
parent 331e6f8dd5
commit 3d82718f5a
3 changed files with 15 additions and 17 deletions

View File

@ -12,13 +12,13 @@ from .lib import *
from .delay import *
from .elmore import *
from .linear_regression import *
from .neural_network import *
from .setup_hold import *
from .functional import *
from .simulation import *
from .measurements import *
from .model_check import *
from .analytical_util import *
from .regression_model import *
debug.info(1, "Initializing characterizer...")
OPTS.spice_exe = ""

View File

@ -634,6 +634,8 @@ class lib:
from .linear_regression import linear_regression as model
elif model_name_lc == "elmore":
from .elmore import elmore as model
elif model_name_lc == "neural_network":
from .neural_network import neural_network as model
else:
debug.error("{} model not recognized. See options.py for available models.".format(OPTS.model_name))

View File

@ -9,10 +9,7 @@
from .regression_model import regression_model
from globals import OPTS
import debug
from tensorflow import keras
from tensorflow.keras import layers
import tensorflow as tf
from sklearn.neural_network import MLPRegressor
class neural_network(regression_model):
@ -20,21 +17,19 @@ class neural_network(regression_model):
def __init__(self, sram, spfile, corner):
super().__init__(sram, spfile, corner)
def get_model(self):
return MLPRegressor(solver='lbfgs', alpha=1e-5,
hidden_layer_sizes=(40, 40, 40, 40), random_state=1)
def generate_model(self, features, labels):
"""
Supervised training of model.
Training multilayer model
"""
model = keras.Sequential([
layers.Dense(32, activation=tf.nn.relu, input_shape=[features.shape[1]]),
layers.Dense(32, activation=tf.nn.relu),
layers.Dense(32, activation=tf.nn.relu),
layers.Dense(1)
])
optimizer = keras.optimizers.RMSprop(0.0099)
model.compile(loss='mean_squared_error', optimizer=optimizer)
model.fit(features, labels, epochs=100, verbose=0)
flat_labels = np.ravel(labels)
model = self.get_model()
model.fit(features, flat_labels)
return model
def model_prediction(self, model, features):
@ -44,5 +39,6 @@ class neural_network(regression_model):
"""
pred = model.predict(features)
return pred
reshape_pred = np.reshape(pred, (len(pred),1))
return reshape_pred