def evaluator(x_train, y_train, x_val, y_val, **kwargs): # Define model model = Sequential(loss="cross_entropy") model.add( Dense(nodes=10, input_dim=x_train.shape[0], weight_initialization="fixed")) model.add(Activation("softmax")) # Fit model model.fit(X=x_train, Y=y_train, X_val=x_val, Y_val=y_val, **kwargs) model.plot_training_progress(show=False, save=True, name="figures/" + dict_to_string(kwargs)) # model.save("models/" + dict_to_string(kwargs)) # Minimizing value: value = model.get_classification_metrics(x_val, y_val)[0] # Get accuracy result = {"value": value, "model": model} # Save score and model return result
x_train, y_train = getXY(LoadBatch("data_batch_1")) x_val, y_val = getXY(LoadBatch("data_batch_2")) x_test, y_test = getXY(LoadBatch("test_batch")) # Preprocessing mean_x = np.mean(x_train) std_x = np.std(x_train) x_train = (x_train - mean_x) / std_x x_val = (x_val - mean_x) / std_x x_test = (x_test - mean_x) / std_x # Define SVM multi-class model model = Sequential(loss="categorical_hinge") model.add(Dense(nodes=10, input_dim=x_train.shape[0])) model.add(Activation("softmax")) # Fit model model.fit(X=x_train, Y=y_train, X_val=x_val, Y_val=y_val, batch_size=100, epochs=100, lr=0.0001, momentum=0.1, l2_reg=0.1) model.plot_training_progress() # Test model test_acc, test_loss = model.get_classification_metrics(x_test, y_test) print("Test accuracy:", test_acc)
# Preprocessing mean_x = np.mean(x_train) std_x = np.std(x_train) x_train = (x_train - mean_x) / std_x x_val = (x_val - mean_x) / std_x x_test = (x_test - mean_x) / std_x # Define model model = Sequential(loss=CrossEntropy()) model.add(Dense(nodes=10, input_dim=x_train.shape[0])) model.add(Softmax()) # Fit model # model.load("models/mlp_test") model.fit(X=x_train, Y=y_train, X_val=x_val, Y_val=y_val, batch_size=100, epochs=40, lr=0.001, momentum=0.0, l2_reg=0.0, shuffle_minibatch=False) model.plot_training_progress(save=True, name="figures/mlp_test") model.save("models/mlp_test") # Test model test_acc, test_loss = model.get_classification_metrics(x_test, y_test) print("Test accuracy:", test_acc)