os.environ["SIGOPT_API_TOKEN"] = # SIGOPT-API-TOKEN
os.environ["SIGOPT_PROJECT"] = "run-examples"
def __init__(self, hidden_layer_size, activation_fn):
model = tf.keras.Sequential(
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(hidden_layer_size, activation=activation_fn),
tf.keras.layers.Dense(10),
def get_keras_nn_model(self):
def train_model(self, train_images, train_labels, optimizer_type, metrics_list, num_epochs):
optimizer=optimizer_type,
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
self.model.fit(train_images, train_labels, epochs=num_epochs)
def evaluate_model(self, test_images, test_labels):
metrics_dict = self.model.evaluate(test_images, test_labels, verbose=2, return_dict=True)
def load_data_train_model(sigopt_run):
sigopt_run.log_dataset(name="mnist")
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()
# set model training, architecture parameters and hyperparameters
sigopt_run.params.num_epochs = 2
sigopt_run.params.hidden_layer_size = 200
sigopt_run.params.activation_fn = "relu"
keras_nn_model = KerasNNModel(
hidden_layer_size=sigopt_run.params.hidden_layer_size, activation_fn=sigopt_run.params.activation_fn
sigopt_run.log_model("Keras NN Model with 1 Hidden layer")
keras_nn_model.train_model(train_images, train_labels, "adam", ["accuracy"], sigopt_run.params.num_epochs)
sigopt_run.log_metadata("sgd optimizer", "adam")
metrics_dict = keras_nn_model.evaluate_model(test_images, test_labels)
# log performance metrics
sigopt_run.log_metric("accuracy", metrics_dict["accuracy"])
sigopt_run.log_metric("loss", metrics_dict["loss"])
if __name__ == "__main__":
with sigopt.create_run() as run:
load_data_train_model(sigopt_run=run)pyth