From f6c99d4cbea91f97e3a970a2c10e65714232b31f Mon Sep 17 00:00:00 2001 From: Milan <milan.cart@ecl20.ec-lyon.fr> Date: Fri, 10 Nov 2023 13:11:27 +0100 Subject: [PATCH] Part 3 : ann --- knn.py | 5 +- mlp.py | 175 +++++++++++++++++++++++++++++++++++++++++++++++++ result/knn.png | Bin 2396 -> 33635 bytes 3 files changed, 178 insertions(+), 2 deletions(-) diff --git a/knn.py b/knn.py index 3ea3ce9..e65d683 100644 --- a/knn.py +++ b/knn.py @@ -41,6 +41,7 @@ def test_knn() : X_train, X_test, y_train, y_test = read_cifar.split_dataset(data, labels, 0.9) for k in k_indices : + print(k) accuracy = evaluate_knn(X_train, y_train, X_test, y_test, k) accuracies.append(accuracy) @@ -50,9 +51,9 @@ def test_knn() : plt.plot(k_indices, accuracies) plt.title("Accuracy as function of k") plt.legend() - plt.show() plt.savefig('/Users/milancart/Documents/GitHub/image-classification/result/knn.png') - + plt.show() + plt.close() if __name__ == "__main__": diff --git a/mlp.py b/mlp.py index e69de29..3908f75 100644 --- a/mlp.py +++ b/mlp.py @@ -0,0 +1,175 @@ +import numpy as np +import read_cifar +import matplotlib.pyplot as plt + + +def sigmoid(x): + return 1 / (1 + np.exp(-x)) + +def learn_once_mse(w1, b1, w2, b2, data, targets, learning_rate): + + N_out = len(data) #number of training examples + # Forward pass + a0 = data # the data are the input of the first layer + z1 = np.dot(a0, w1) + b1 # input of the hidden layer + a1 = sigmoid(z1) # output of the hidden layer (sigmoid activation function) + z2 = np.dot(a1, w2) + b2 # input of the output layer + a2 = sigmoid(z2) # output of the output layer (sigmoid activation function) + predictions = a2 # the predicted values are the outputs of the output layer + + # Compute loss (MSE) + loss = np.mean(np.square(predictions - targets)) + print(f'loss: {loss}') + # print('shape a1', a1.shape) + # print('shape w1', w1.shape) + # print('shape b1', b1.shape) + + # print('shape a2', a2.shape) + # print('shape w2', w2.shape) + # print('shape b2', b2.shape) + + # Backpropagation + + # Backpropagation + delta_a2 = 2 / N_out * (a2 - targets) + delta_z2 = delta_a2 * (a2 * (1 - a2)) # We divide by the sample size to have an average on the error and avoid big gradient jumps + delta_w2 = np.dot(a1.T, delta_z2) + delta_b2 = np.sum(delta_z2, axis = 0, keepdims = True) + + delta_a1 = np.dot(delta_z2, w2.T) + delta_z1 = delta_a1 * (a1 * (1 - a1)) + delta_w1 = np.dot(a0.T, delta_z1) + delta_b1 = np.sum(delta_z1, axis = 0, keepdims = True) + + return w1, b1, w2, b2, loss + +def one_hot(labels): + num_classes = int(np.max(labels) + 1) #num_classes = 10 + one_hot_matrix = np.eye(num_classes)[labels] + return one_hot_matrix + +def softmax_stable(x): + #We use this function to avoid computing big numbers + return(np.exp(x - np.max(x, axis=1, keepdims=True)) / np.exp(x - np.max(x, axis=1, keepdims=True)).sum()) + +def cross_entropy_loss(y_pred, y_true_one_hot): + epsilon = 1e-10 + loss = - np.sum( y_true_one_hot * np.log(y_pred + epsilon) ) / len(y_pred) + return loss + + +def learn_once_cross_entropy(w1, b1, w2, b2, data, labels_train, learning_rate): + + N_out = len(data) + + + a0 = data + z1 = np.matmul(a0, w1) + b1 + a1 = sigmoid(z1) + z2 = np.matmul(a1, w2) + b2 + a2 = softmax_stable(z2) + predictions = a2 + + y_true_one_hot = one_hot(labels_train) + loss = cross_entropy_loss(predictions, y_true_one_hot) + + + delta_z2 = (a2 - y_true_one_hot) + delta_w2 = np.dot(a1.T, delta_z2) / N_out + delta_b2 = np.sum(delta_z2, axis = 0, keepdims = True) / N_out + + delta_a1 = np.dot(delta_z2, w2.T) + delta_z1 = delta_a1 * (a1 * (1 - a1)) / N_out + delta_w1 = np.dot(a0.T, delta_z1) / N_out + delta_b1 = np.sum(delta_z1, axis = 0, keepdims = True) / N_out + + + + w1 -= learning_rate * delta_w1 + b1 -= learning_rate * delta_b1 + w2 -= learning_rate * delta_w2 + b2 -= learning_rate * delta_b2 + + return w1, b1, w2, b2, loss + + +def forward(w1, b1, w2, b2, data): + + a0 = data + z1 = np.matmul(a0, w1) + b1 + a1 = sigmoid(z1) + z2 = np.matmul(a1, w2) + b2 + a2 = softmax_stable(z2) + predictions = a2 + return(predictions) + +def train_mlp(w1, b1, w2, b2, data_train, labels_train, learning_rate, num_epoch): + train_accuracies = [] + for epoch in range(num_epoch): + w1, b1, w2, b2, loss = learn_once_cross_entropy(w1, b1, w2, b2, data_train, labels_train, learning_rate) + + # Compute accuracy + predictions = forward(w1, b1, w2, b2, data_train) + predicted_labels = np.argmax(predictions, axis=1) + accuracy = np.mean(predicted_labels == labels_train) + train_accuracies.append(accuracy) + + print(f'Epoch {epoch + 1}/{num_epoch}, Loss: {loss:.3f}, Train Accuracy: {accuracy:.5f}') + + return w1, b1, w2, b2, train_accuracies + +def test_mlp(w1, b1, w2, b2, data_test, labels_test): + + # Compute accuracy + predictions = forward(w1, b1, w2, b2, data_test) + predicted_labels = np.argmax(predictions, axis=1) + test_accuracy = np.mean(predicted_labels == labels_test) + print(f'Test Accuracy: {test_accuracy:.2f}') + return test_accuracy + +def run_mlp_training(data_train, labels_train, data_test, labels_test, d_h, learning_rate, num_epoch): + + d_in = data_train.shape[1] + d_out = 10 + + #Random initialisation of weights Xavier initialisation + w1 = np.random.randn(d_in, d_h) / np.sqrt(d_in) + b1 = np.zeros((1, d_h)) + w2 = np.random.randn(d_h, d_out) / np.sqrt(d_h) + b2 = np.zeros((1, d_out)) + + # Train MLP + w1, b1, w2, b2, train_accuracies = train_mlp(w1, b1, w2, b2, data_train, labels_train, learning_rate, num_epoch) + + # Test MLP + test_accuracy = test_mlp(w1, b1, w2, b2, data_test, labels_test) + return train_accuracies, test_accuracy + +def plot_graph(data_train, labels_train, data_test, labels_test, d_h, learning_rate, num_epoch): + # Run MLP training + train_accuracies, test_accuracy = run_mlp_training(data_train, labels_train, data_test, labels_test, d_h, learning_rate, num_epoch) + + # Plot and save the learning accuracy graph + plt.figure(figsize=(8, 6)) + epochs = np.arange(1, num_epoch + 1) + plt.plot(epochs, train_accuracies, marker='x', color='b', label='Train Accuracy') + plt.xlabel('Epochs') + plt.ylabel('Accuracy') + plt.title('MLP Train Accuracy') + plt.legend() + plt.savefig('/Users/milancart/Documents/GitHub/image-classification/results/mlp.png') + plt.show() + plt.close() + + + +if __name__ == '__main__': + data, labels = read_cifar.read_cifar('/Users/milancart/Documents/GitHub/image-classification/Data/cifar-10-batches-py') + X_train, X_test, y_train, y_test = read_cifar.split_dataset(data, labels, 0.9) + d_in, d_h, d_out = 3072, 64, 10 + learning_rate = 0.1 + num_epoch = 100 + + plot_graph(X_train, y_train, X_test ,y_test , d_h, learning_rate, num_epoch) + + \ No newline at end of file diff --git a/result/knn.png b/result/knn.png index 72354204692aa86cfb0bce31acc22fdbb378fc2f..6b2658748c05e4364de9b039d615ca7cdf3215bc 100644 GIT binary patch literal 33635 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 O#Cy8>xvX<aXaWG1fZ-qj literal 2396 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A#=yW}dhyN^1_lPp64!{5;QX|b^2DN4 z2H(Vzf}H%4oXjMJvecsD%=|oKJ##%H9fgdNl7eC@ef?ax0=@jAbbZa(r}YdB44efX zk;M!Q{D~mUxWayUCIbV<NlzEYkcv5PuNg8jDDWIGII#cuL#948uBx*0XLJ}CjLyAh zU|_gs)WE=C$R@y`aEyV8;fRC-LxTh}2ZKN|10zEcj{<{34<idhhvBHA(I6O21)~{Z ov@94c4o7Q*(Mpl7?E*cuO7=a=mv2g9U|?YIboFyt=akR{0QjPxK>z>% -- GitLab