mirror of https://github.com/VLSIDA/OpenRAM.git
Changed neural network model to be sklearn based
This commit is contained in:
parent
331e6f8dd5
commit
3d82718f5a
|
|
@ -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 = ""
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
Loading…
Reference in New Issue