Source code for sensai.tensorflow.tf_mlp
from tensorflow import keras
from .tf_base import KerasVectorRegressionModel
from .. import normalisation
[docs]class KerasMultiLayerPerceptronVectorRegressionModel(KerasVectorRegressionModel):
def __init__(self, hidden_dims=(5,5), hidden_activation="sigmoid", output_activation="sigmoid", loss="mse",
metrics=("mse",), optimiser="adam", normalisation_mode=normalisation.NormalisationMode.MAX_BY_COLUMN, **kwargs):
super().__init__(normalisation_mode, loss, metrics, optimiser, **kwargs)
self.hiddenDims = hidden_dims
self.hiddenActivation = hidden_activation
self.outputActivation = output_activation
def __str__(self):
params = dict(hiddenDims=self.hiddenDims, hiddenActivation=self.hiddenActivation,
outputActivation=self.outputActivation)
return f"{self.__class__.__name__}{params}={super().__str__()}"
def _create_model(self, input_dim, output_dim):
model_inputs = keras.Input(shape=(input_dim,), name='input')
x = model_inputs
for i, hiddenDim in enumerate(self.hiddenDims):
x = keras.layers.Dense(hiddenDim, activation=self.hiddenActivation, name='dense_%d' % i)(x)
model_outputs = keras.layers.Dense(output_dim, activation=self.outputActivation, name='predictions')(x)
return keras.Model(inputs=model_inputs, outputs=model_outputs)