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 .delay import *
from .elmore import * from .elmore import *
from .linear_regression import * from .linear_regression import *
from .neural_network import *
from .setup_hold import * from .setup_hold import *
from .functional import * from .functional import *
from .simulation import * from .simulation import *
from .measurements import * from .measurements import *
from .model_check import * from .model_check import *
from .analytical_util import * from .analytical_util import *
from .regression_model import *
debug.info(1, "Initializing characterizer...") debug.info(1, "Initializing characterizer...")
OPTS.spice_exe = "" OPTS.spice_exe = ""

View File

@ -634,6 +634,8 @@ class lib:
from .linear_regression import linear_regression as model from .linear_regression import linear_regression as model
elif model_name_lc == "elmore": elif model_name_lc == "elmore":
from .elmore import elmore as model from .elmore import elmore as model
elif model_name_lc == "neural_network":
from .neural_network import neural_network as model
else: else:
debug.error("{} model not recognized. See options.py for available models.".format(OPTS.model_name)) 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 .regression_model import regression_model
from globals import OPTS from globals import OPTS
import debug import debug
from sklearn.neural_network import MLPRegressor
from tensorflow import keras
from tensorflow.keras import layers
import tensorflow as tf
class neural_network(regression_model): class neural_network(regression_model):
@ -20,21 +17,19 @@ class neural_network(regression_model):
def __init__(self, sram, spfile, corner): def __init__(self, sram, spfile, corner):
super().__init__(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): def generate_model(self, features, labels):
""" """
Supervised training of model. Training multilayer model
""" """
model = keras.Sequential([ flat_labels = np.ravel(labels)
layers.Dense(32, activation=tf.nn.relu, input_shape=[features.shape[1]]), model = self.get_model()
layers.Dense(32, activation=tf.nn.relu), model.fit(features, flat_labels)
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)
return model return model
def model_prediction(self, model, features): def model_prediction(self, model, features):
@ -44,5 +39,6 @@ class neural_network(regression_model):
""" """
pred = model.predict(features) pred = model.predict(features)
return pred reshape_pred = np.reshape(pred, (len(pred),1))
return reshape_pred