From 162fad1beff2c71cbd0cd66e9cb147227834c1a3 Mon Sep 17 00:00:00 2001
From: Loris <loris.duperret@etu.ec-lyon.fr>
Date: Fri, 27 Oct 2023 17:44:56 +0200
Subject: [PATCH] Ajout de fichiers

---
 __pycache__/knn.cpython-39.pyc        | Bin 0 -> 1168 bytes
 __pycache__/mlp.cpython-39.pyc        | Bin 0 -> 4317 bytes
 __pycache__/read_cifar.cpython-39.pyc | Bin 0 -> 1620 bytes
 knn.py                                |  23 +---
 main.py                               |  44 +++++++
 mlp.py                                | 181 ++++++++++++++++++++++++++
 read_cifar.py                         |  40 ++----
 results/knn.png                       | Bin 0 -> 31893 bytes
 results/mlp.png                       | Bin 0 -> 31623 bytes
 9 files changed, 237 insertions(+), 51 deletions(-)
 create mode 100644 __pycache__/knn.cpython-39.pyc
 create mode 100644 __pycache__/mlp.cpython-39.pyc
 create mode 100644 __pycache__/read_cifar.cpython-39.pyc
 create mode 100644 mlp.py
 create mode 100644 results/knn.png
 create mode 100644 results/mlp.png

diff --git a/__pycache__/knn.cpython-39.pyc b/__pycache__/knn.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..eb7b11d1039c12379dba250936aed3b888321cab
GIT binary patch
literal 1168
zcmYe~<>g{vU|{%n(mJ)Coq^#oh=Yuo7#J8F7#J9eZ5S9BQW#Pga~Pr+Qy5a1a+q?N
zqnH^XVl26=QEZG1Da<J>EeuiYDXb}MEeuf{DeNg6EeuhdDU87knw&2|=K5(e-r`G4
zPA)A<Os<SCPR=h%O$ONkk^^Bj1_lOJ1_lOakexvc3=Aa<S&TIdDU8AlDNG>qdzovQ
zz+#LjV$3BB3z%vcY8bPa7c$kdlrSt{sbNZCtYHyhkYK1`&SDm4Sjbq*TEiO5pvmg@
z5@h8|Mg|6k5KX3AEQuAF#kV-JQ&S64GINVHS#L4r72IMjF3r8goRVL1i!tODOL1XQ
zi6&bVdv0P$QD%i9jA0bTmX}|YTWkoWjiR_y@=M|iit<xRlS^)~reqeE6t83`;$>i9
z_@(A-6%$&VT2vg9lV6ls9OIIoT$-DjS5h3~<Z2l2=@^rpm#0@yd5a&UD={xQH6CIc
zC`^jM(ZnReD8kIgEWuR7&%nTt%nS-KC<e)c6oLaTje&uoh9Qd~g;A2Bmbrv6i>Zbg
z6f`MJy`aEhsbOwrbYY0Kt7WZWs9}|4sAVf*T)<kxwvaJ}p@ylINs^(Ky@s)dU6P@e
zql9q*NS3{ZV<F>0##+uA&Ki~)RvU&wr5cuC22EzaB2YMLGTvfMDXA<-)#SLvTAYzs
zkXppfz`$^ewJNnJzqm*M%q~jIOHaMUo>-J#oL^LOi!HGzJvXu97DrNMUUGhEUWq1G
z5f4ZqPflV|YEE%{Nl{{E-Yv%LTLO8dx$z~b#U=5@iMa(isl~Sh3W`!wGLuVEQ{o|t
zZ!u=x;)DfUag<<od|ql|5lBmBUP@+iYH^eRLI|QIiXY7oa5O;(K9D=Ov-9%ep=yLd
z2~r3Y*i2l^0!%zi9Lz$@94rFNTueo>pvVBFT97mdgS^fHOT`M{R9wPX!&Jl2%v8fz
z!_v%L%US}864qv>TDBUtU<OS_KTT$^IpCNr0;Nw)_FG&ji6x1UU?>s?xrh@YkXl@F
ziyPtzaIh3fFfcF_Nr6;wz%m!aAE1O+1ojM1YFT1VX<|uge0E-*KFBwq<ifxt1oD9r
z0|SF5*Dcn((%gbdaLh&V7iZ_BCKl!C<))StWhNJc-E>PZH?gE3C%+^oGfA(Y62!X2
v2Bnz`a!Mes2Zcuw$VenNARNMBlbfGXnv-e=N;lwi&B4gS$ivLR%OL{*?DiwK

literal 0
HcmV?d00001

diff --git a/__pycache__/mlp.cpython-39.pyc b/__pycache__/mlp.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..846ddab2e99713be53ae094d802f8f310c3e86b9
GIT binary patch
literal 4317
zcmYe~<>g{vU|{%t#X2=ff`Q>Nh=Yuo7#J8F7#J9e6Brm6QW#Pga~Pr+!8B7Ya}*0B
zLkd$0a|=ThYYIyWYYRgZTMAnWdkaGpdkRMiXA46VM+#R8cMC%lX9`aWZwo^dR|;PW
ze+xqtcZxuYU<*SOPl`~Aa0^2eZwg~DgQmz!kllXCj35e%L2OnA1_o!4D?~u9U`$~w
zVOYRe!@$k3kWrjLnjx5BC6nJvkU~wSTTFQcx0q8a3RW`SVysxnP{hH&!0=1W*(xTq
zIJKxaCMUlrvpB{jKe;qFHLs*N#>v$%-qSHAH>W_apz;=bab|jMer5^_$TE=M85oN|
z0fgZqW|)h37#J987*ZH(7$g`(7=js!K)S$|7O^ofK&*#wIT;ujZV5pxh)+o^$}CGP
z$t+7{N3x5Xfq@|zBmnh1gAfA)1Begy{U?xJEVb-l-?P^+EM%%-6lbXAC}FDMXlAVC
z1dDUlFfC-NVHRho<tkyS;c8~A<*wnb<tbrUz+A$xfTf0~hE;-LA>%^ETHX{!2v3Be
zh9!$Ng-Mb@nxU4jhOdOJhP#<jgrSxnY$AURQx^L|rdoj-ffBYFPOyw%4O0ypSe7%3
zy@r1wlL&(aLoHJcGe|UxqlO=pE>c)}nZe@BH4Gr}1&lT9S?o1}P}K}Ij3Ci0jv7G}
z)r>VD8IW1LX{^Bvnyh{=!GQ{j;E<I}w^$M@GK+6<WT&PUq-5q6YjPHWqU#o0ZemGp
zX%0BPZn5O1Cg$B@D=sWeEK0q_TAYzskXi%^-CK+yx0s7db2Wu-F_jzMVoEZ+#Z+!|
ziz&(I7E4NEN#ZT`lEk9))RN*`yg8|fMR}Qd>G4I0C8@WV5)E!KRT<u5N;JI1RAqFF
zDbeT_cR^8VN@j9NW`17rEtZ`8;^HWdl+>J(#P~#`TToUNoRw$@7c+z;2~gTB0;dZ;
zux0W2dC95qxy7lVG*_$uN(4+Si~@`tV9dfS!Yszf!^p?T!z{)q!6?Qk!BnIUN-?0|
z0VxJyP|5_QJaCH9VPIeY#Zn1V4MQ_y4PzS9LdIIA6vi4RaC!iXE@Z4>NMo{Ls9}Pp
zUQHHAfU;Jl7UdV;V$Mm;yTz7Rl$e*Es>ytdEhjN4HK+I%cV203d~!}=adB#K6kmQ`
zYJ5h1NqlZ%Nl|76y6@Pb(kh^&4ssj=qY$GQW05Y%@u1`laySSJGcYiK!UODh0Y(Of
z8gi36a}8@VV=Zq9OATucQx<Cqqa;HLQ!i63UkY;#uQVu7*lPGn7#6VC@GN8$0cBu5
z36Ll|C{utkhzNr?14yQpzlOVpPlBOV02Gil0yRuo91EFh1#1LLIH8$A2q`mg)CfS6
zHz)zKl`v$n)d+wJ#}qa!nSrB52&x*C<RPksP*fu_13x%3u=^E(Vt6HE5h!k7{{R2~
ze-Sui6!9`JFlcgtqpnB*RP=xnQIRHy1q$aPP}mlUf(jw#oc#16P*Dob5t_n9VjxB0
zAVLB}NP-9{kV+m%WXG2jC1&Oo$$-RVL4+KLkOvW<L|UW>Vkv<%Fy`KZrv-@KB4v;y
zDCUb)K`b>80Z#Z}0u<Y~B#=^na#4P9aeQiCNl|`5r4}f`fDC3p$p;*aLX1Yt9H=?L
z1eBPNa{{Q=0F?~j!~_bh5{4{BP+1L52%sFmRKrxmm<`Gk%r(p<%r%V7jM5CXEHx~_
z3@e!-0j<ec#0LskXr5q8EK1K!tN@22IBYdpi$LxxG6eZv09qcTro=-$e~Udizo;lR
zx#Si{Vsdh6QDSl>dfpI7&d)6<ElG`sDR2Y%85A}QjC>#;G8S2Zd<GT)<q-x322ccn
z3Nx_Jb}=$Aq=RY!h8p%}Mi+(&jInb-bwLSZ4NEg4R79edtA?e9tA;CuQJkTbNs^(K
zyM`5o&r`!)%Ui;<fVqYjUbFC(u+;E1GuHBh#rfeii$DoWjX*OaC==8Qm9W<E)G%eS
z!Lyif3DW}h8W0Ie-jK{CEWuF1w16Xpu|^1yxwsi>MQQ|Vge4eiMZq?R)-YvpE@Y||
zs}U>Vs^JIMG~(dQ1#%aE7H5qpG`m1D7gH8{jc5upD8ry+E|6;8EY2EnsA@>&0;v{9
zQO#H=SHnWOuS>XV1Z!BEnQA3!I2Q2KNGxPzWGLZHVXNT;h3;&I6!seS*$gQhH6kgT
zvsqHOY9v7PT#jZ&MutKjc<sgk&d}VDbXKGX$`^>7{EN-CAU`=n;TNO+FAg0ApZwxt
zD}`UodM0VVM0FHGK>0B<FI~YAnyRc6H2H3^g3D-dvP3TiP)mR!1CV9#5&)dQZm}g6
z6r|>*++r;#%FHX#l*Cpl+~NY&k<j7*l;pu>!YwXPU62ZLZ}BYwa9IIM&6%miw^+e4
zw-_^vKxImiHpp(grAU!6NC}p5;}#!^;TU;|6C$0PQ{V&2M4)`bz{tYH$0)=oz$n0s
zT$Ktj>Yx-LQb@8~j9g4wOhulcYzMBbpxF*o5Wou*P=mOJr54f%VuNQH_7WygHmv0U
z*A^V`EW=sC1gb4+xk?zam_gYPTnKT4n`GQItl&b3r-rA56;y9YGt~0d@CGv!nSzQQ
zHuT6e0|gJLBnL;eCLh+A;)KLhYH`UeZb)GiUy@o}QiL<)%|WJGfQm6*kV04tVgxb=
zST;AOpaK-epav=fBRpi8z(p2QkuNChkZX2OjR7yRG?+k*<}3zKkx|QD!U)d%j0+i?
z8EZLGm`a$kSQfC>u-CAFvTq8b1Vb%n3DW|$6vi4Ba07-5u7;(C1FnV}s)hrsh9{k&
zmbZkxh7DQ(&a34sVJ~3>HG`lcLbd!g3^n{U{Gdz=E)oT57*Y6wH3GFlpkk{=sD^VP
zQw^6mL#=QLXN_<(W332ST%?A3AyW;HIH&;QtPyQytOXTZf;Ai|%)Lyt;w4NAxNATp
zPmLI;Es?@lBMvSIc~Tf_#83)Ci5fAGT&*P7T*(^lEZ&7owNf=wH6q~Fi3q5BQ7c`;
zUBe1iA(F*gBMI`m1*j<J0f}aD*GPhjLU>Dqr-l<GzJQ}fD2um78mgMJh6^N`#a$zf
zqMEC)u7-gO|MJy<OysTs7i`UJwK6rl3;1hfz=fhf3VRJ7D15=iA=_+*6wVrn6t3AU
zDcm(OAR1aI=9C~zVX9$nW~-I0;jNKPV+v-_<bf8Dpq>_bDOqF<O0+g0!WKl>fe3q0
zrV)g+cfidbP@cWTR+^VtSekl^ttc@sB|rBT3y3b#0BHbqaFLo!;Ia~&y%5DDC_NWB
zf)qP}OqVMHRlVR!zsL(D>J7>_%qj61-~zG8g@J(~iX|mJGcSrYB|g8j1X~s@as}xG
zRrf{iAQlm&Bd&t6$OB{msL;b`UKEw)#pmV}K+5dQy!19ut_4}jz{thO$0Wwc$0)|g
z#{@4W5e+RS9!4D|P$Nr#3DVt=LXs0=<YLrf5@IR}0)+?PE!Mo!+=5DQNp(vwH?gE3
zC%+^oGfA(Y62!X22Bnz`a!SBGG;q@s+<O7{0*XMbH*h@!E_T7?2iRyN|8Ri(2yQQO
n*yQG?l;)(`f$Ga*P(8-M$iu|J%)!hd#lglQ!@<U(!@&mtw`_!a

literal 0
HcmV?d00001

diff --git a/__pycache__/read_cifar.cpython-39.pyc b/__pycache__/read_cifar.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3738cdce594ff5472b3bbb3863d23cb76f337b83
GIT binary patch
literal 1620
zcmYe~<>g{vU|?uEX`SlI!NBks#6iX^3=9ko3=9m#H4F?4DGVu$ISf&ZV45k42~0Cb
zF{d!4Ft;#7v81r1u(mKnv8J%4u(vQov8A%7aAY$TRito6aip@Qax^o>Fhy}jaiwyn
zaHVo)@ia3rGNf{+aHn!X*eN_wys2!doT*%?yv@upEKz(>{80i?f+>u_44S+zLGJQP
zW&}}C%*w#Pz`?-4;0$tM0Rsa=2}2D-3S%=<zg#V231b#h4I{{Hy-c-C;S4DZEDS6R
z&CHApc>;zE#d-z|j9?haz{pU;l)@s(P|IAyl)@^>P|H%noW)YZT*92in!?u0R10FU
z)PO|Uz<ib(<{FkXreFq5cE4LpMM<|<lPXJ6i!~W<air!Y=ci=mr5A%jE+w%fv6zj4
zfgvX`DK!Tq&ze$FS&*v9ev2i)AT{q6TR~=Wc24RomYn>=lv_-B1-Doei;5B}Z?UK4
z<R_LG8{J~f%quZ7(PX{Fm6TYLoDpA;SdwvzB`q^2H3}*Mvg8&Em}G<4vy!1mkb!~W
zm#(u_OlWaxQE^O8eo<y|j7xrUX>Mv>NpXymt6{vSV@y$MVoH2+W?EvAUP0w80R%T5
zY#Atci}^rd&B(*3!^FYJ!7RWiz*Hp6z`%eK59|yK3?Rkect~JiU`S`EWlU$NWlCXm
zVTd)VWiDaJVqCyf!%)M#kO>sJH7uaCP|I4&R>Qb}rG|AOBPb3Qu+*@DScN<#tXXXE
zxMMA0UBFhuw2-lut%kLR4IJ()ewu7iJRna)oEmS4!ZSkQ8Kdw_P<W<MTqUW+B@k1J
zK#5C}@fJ&BMP{)k`z@yY;#(|`5YNib%maJ;7F%LLL26z~5hnu!!!7RQ{JiAElGMD!
zl2lFhD87`;qSWM){Gv*5L?PRhS{%g-jvk0rsl~AP1I1+#F9QQZ5kH6!01=?*1IJ;J
z5XcrTM9hG~zE}htCoGICOdO1SOgv0nj6BSIj9g4bQlOY&2FXG(Hv<C$C?$eprUaTp
zni*@EOBidIYnVhBni*@ssab-dmbHW_i+KS{4Kp~T8EV*47;0ErnIst`8EV;U7*Y5f
zH4HUuH7qF%P<c*}JQAO)hP{TPhO>q%jU|{tlhIF;^%iqZYThm8%)Amv$gveA=B4E4
z-r_DuEy^t|Ni50C&(q{aguyM=;)0yak|^%H(%kss#N2|M)Z!>X5T~RlF*6S?Bmfoy
zMIlTPe{n`>T3SwOd}dxsW^!urEiQ060c*R(1CE2@cnFUZB9mHNa*G=#ky=~=33_lO
zfWw~`?38$r;^Nd2RZwXI5@%rMVCG@uVCDg33r29(Pyt03M|^xP$cgb)8XztD;2frF
zXrNnAS(1^T7X#;mb6IM!Zb4-gw@YG4qC#;-VnM1^6|WDtynu4k&z=E+H};xBw^;K^
za|<fLAy@>;bw#3}<N`_*;J7b>*`Jq~n;IXFmaJ~E78GUXmE2+lTT>(t(y9O=6hVX%
zh)@O*V2>jRkXLVU*yQG?l;)(`fwD-k1gPL;<Y44r;^5;D;t=CtWMSk1Ll#B=C&!op

literal 0
HcmV?d00001

diff --git a/knn.py b/knn.py
index ff2624e..a2ce05f 100644
--- a/knn.py
+++ b/knn.py
@@ -2,6 +2,7 @@ import numpy as np
 from sklearn.metrics import accuracy_score
 import matplotlib.pyplot as plt
 
+
 def distance_matrix(matrix1, matrix2):
     # Calculate the squared norms of each row in the input matrices
     norms1 = np.sum(matrix1**2, axis=1, keepdims=True)
@@ -52,25 +53,3 @@ def evaluate_knn(data_train, labels_train, data_test, labels_test, k):
 
     return accuracy
 
-split_factor = 0.9
-k_values = range(1, 21)
-accuracies = []
-
-for k in k_values:
-    accuracy = evaluate_knn(data_train, labels_train, data_test, labels_test, k)
-    accuracies.append(accuracy)
-
-# Create the plot
-plt.figure(figsize=(8, 6))
-plt.plot(k_values, accuracies, marker='o')
-plt.title('KNN Accuracy vs. k')
-plt.xlabel('k')
-plt.ylabel('Accuracy')
-plt.grid(True)
-
-# Save the plot as "knn.png" in the "results" directory
-plt.savefig('results/knn.png')
-
-# Show the plot (optional)
-plt.show()
-
diff --git a/main.py b/main.py
index e69de29..82b526f 100644
--- a/main.py
+++ b/main.py
@@ -0,0 +1,44 @@
+import read_cifar
+import knn
+import matplotlib.pyplot as plt
+import mlp
+
+split = 0.9
+d_h=64
+learning_rate=0.1
+num_epochs=2
+
+
+batch_path = "data/cifar-10-python\cifar-10-batches-py"
+data, labels = read_cifar.read_cifar(batch_path)
+data_train, labels_train, data_test, labels_test = read_cifar.split_dataset(data, labels, split)
+
+"""k_values = range(1, 21)
+accuracies = []
+
+for k in k_values:
+    accuracy = knn.evaluate_knn(data_train, labels_train, data_test, labels_test, k)
+    accuracies.append(accuracy)
+
+plt.figure(figsize=(8, 6))
+plt.plot(k_values, accuracies, marker='o')
+plt.title('KNN Accuracy vs. k')
+plt.xlabel('k')
+plt.ylabel('Accuracy')
+plt.grid(True)
+
+# On enregistre le graphique dans Results
+plt.savefig('results/knn.png')
+
+plt.show()"""
+
+
+train_accuracies,test_accuracy =  mlp.run_mlp_training(data_train, labels_train, data_test, labels_test, d_h, learning_rate, num_epochs)
+def plot_learning_accuracy(train_accuracies):
+    plt.figure()
+    plt.plot(range(1, len(train_accuracies) + 1), train_accuracies)
+    plt.xlabel("Epoch")
+    plt.ylabel("Training Accuracy")
+    plt.title("MLP Training Accuracy")
+    plt.savefig("results/mlp.png")
+plot_learning_accuracy(train_accuracies)
\ No newline at end of file
diff --git a/mlp.py b/mlp.py
new file mode 100644
index 0000000..f451cbd
--- /dev/null
+++ b/mlp.py
@@ -0,0 +1,181 @@
+import numpy as np
+import matplotlib.pyplot as plt
+
+def sigmoid(x):
+    return 1 / (1 + np.exp(-x))
+
+def sigmoid_derivative(x):
+    return x * (1 - x)
+
+def learn_once_mse(w1, b1, w2, b2, data, targets, learning_rate):
+    # Forward pass
+    a0 = data
+    z1 = np.matmul(a0, w1) + b1
+    a1 = sigmoid(z1)
+    z2 = np.matmul(a1, w2) + b2
+    a2 = sigmoid(z2)
+    predictions = a2
+
+    # Compute loss (MSE)
+    loss = np.mean(np.square(predictions - targets))
+
+    # Backpropagation
+    delta_a2 = 2 * (predictions - targets) / data.shape[0]
+    delta_z2 = delta_a2 * sigmoid_derivative(a2)
+    delta_a1 = np.matmul(delta_z2, w2.T)
+    delta_z1 = delta_a1 * sigmoid_derivative(a1)
+
+    # Update weights and biases
+    w2 -= learning_rate * np.matmul(a1.T, delta_z2)
+    b2 -= learning_rate * np.sum(delta_z2, axis=0, keepdims=True)
+    w1 -= learning_rate * np.matmul(a0.T, delta_z1)
+    b1 -= learning_rate * np.sum(delta_z1, axis=0, keepdims=True)
+
+    return w1, b1, w2, b2, loss
+
+def one_hot(labels, num_classes):
+    one_hot_matrix = np.zeros((len(labels), num_classes))
+    one_hot_matrix[np.arange(len(labels)), labels] = 1
+    return one_hot_matrix
+
+
+def learn_once_cross_entropy(w1, b1, w2, b2, data, labels_train, learning_rate):
+    # Forward pass
+    a0 = data
+    z1 = np.matmul(a0, w1) + b1
+    a1 = sigmoid(z1)
+    z2 = np.matmul(a1, w2) + b2
+    a2 = sigmoid(z2)
+    predictions = a2
+
+    # Compute loss (cross-entropy)
+    m = len(labels_train)
+    one_hot_labels = one_hot(labels_train, num_classes=w2.shape[1])
+    loss = -1/m * np.sum(one_hot_labels * np.log(predictions) + (1 - one_hot_labels) * np.log(1 - predictions))
+
+    # Backpropagation
+    delta_z2 = a2 - one_hot_labels
+    delta_a1 = np.matmul(delta_z2, w2.T)
+    delta_z1 = delta_a1 * sigmoid_derivative(a1)
+
+    # Update weights and biases
+    w2 -= learning_rate * np.matmul(a1.T, delta_z2)
+    b2 -= learning_rate * np.sum(delta_z2, axis=0, keepdims=True)
+    w1 -= learning_rate * np.matmul(a0.T, delta_z1)
+    b1 -= learning_rate * np.sum(delta_z1, axis=0, keepdims=True)
+
+    return w1, b1, w2, b2, loss
+
+
+def compute_accuracy(predictions, labels_train):
+    predicted_labels = np.argmax(predictions, axis=1)
+    correct = np.sum(predicted_labels == labels_train)
+    accuracy = correct / len(labels_train)
+    return accuracy
+
+def train_mlp(w1, b1, w2, b2, data_train, labels_train, learning_rate, num_epochs):
+    train_accuracies = []
+
+    for epoch in range(num_epochs):
+        for i in range(len(data_train)):
+            data = data_train[i:i+1]
+            labels = labels_train[i:i+1]
+
+            # Forward pass
+            a0 = data
+            z1 = np.matmul(a0, w1) + b1
+            a1 = sigmoid(z1)
+            z2 = np.matmul(a1, w2) + b2
+            a2 = sigmoid(z2)
+            predictions = a2
+
+            # Compute loss (cross-entropy)
+            one_hot_labels = one_hot(labels, num_classes=w2.shape[1])
+            loss = -np.sum(one_hot_labels * np.log(predictions) + (1 - one_hot_labels) * np.log(1 - predictions))
+
+            # Backpropagation
+            delta_z2 = a2 - one_hot_labels
+            delta_a1 = np.matmul(delta_z2, w2.T)
+            delta_z1 = delta_a1 * sigmoid_derivative(a1)
+
+            # Update weights and biases
+            w2 -= learning_rate * np.matmul(a1.T, delta_z2)
+            b2 -= learning_rate * np.sum(delta_z2, axis=0, keepdims=True)
+            w1 -= learning_rate * np.matmul(a0.T, delta_z1)
+            b1 -= learning_rate * np.sum(delta_z1, axis=0, keepdims=True)
+
+        # Calculate training accuracy for this epoch
+        a0 = data_train
+        z1 = np.matmul(a0, w1) + b1
+        a1 = sigmoid(z1)
+        z2 = np.matmul(a1, w2) + b2
+        a2 = sigmoid(z2)
+        train_accuracy = compute_accuracy(a2, labels_train)
+        train_accuracies.append(train_accuracy)
+
+        print(f"Epoch {epoch + 1}/{num_epochs}, Loss: {loss:.4f}, Training Accuracy: {train_accuracy:.4f}")
+
+    return w1, b1, w2, b2, train_accuracies
+
+def test_mlp(w1, b1, w2, b2, data_test, labels_test):
+    a0 = data_test
+    z1 = np.matmul(a0, w1) + b1
+    a1 = sigmoid(z1)
+    z2 = np.matmul(a1, w2) + b2
+    a2 = sigmoid(z2)
+
+    predicted_labels = np.argmax(a2, axis=1)
+    correct = np.sum(predicted_labels == labels_test)
+    test_accuracy = correct / len(labels_test)
+
+    return test_accuracy
+
+
+def run_mlp_training(data_train, labels_train, data_test, labels_test, d_h, learning_rate, num_epochs):
+    d_in = data_train.shape[1]
+    d_out = len(np.unique(labels_train))
+
+    w1 = 2 * np.random.rand(d_in, d_h) - 1
+    b1 = np.zeros((1, d_h))
+    w2 = 2 * np.random.rand(d_h, d_out) - 1
+    b2 = np.zeros((1, d_out))
+
+    train_accuracies = []
+
+    for epoch in range(num_epochs):
+        for i in range(len(data_train)):
+            data = data_train[i:i+1]
+            labels = labels_train[i:i+1]
+
+            a0 = data
+            z1 = np.matmul(a0, w1) + b1
+            a1 = sigmoid(z1)
+            z2 = np.matmul(a1, w2) + b2
+            a2 = sigmoid(z2)
+
+            one_hot_labels = one_hot(labels,num_classes=d_out)
+            loss = -np.sum(one_hot_labels * np.log(a2) + (1 - one_hot_labels) * np.log(1 - a2))
+
+            delta_z2 = a2 - one_hot_labels
+            delta_a1 = np.matmul(delta_z2, w2.T)
+            delta_z1 = delta_a1 * a1 * (1 - a1)
+
+            w2 -= learning_rate * np.matmul(a1.T, delta_z2)
+            b2 -= learning_rate * np.sum(delta_z2, axis=0, keepdims=True)
+            w1 -= learning_rate * np.matmul(a0.T, delta_z1)
+            b1 -= learning_rate * np.sum(delta_z1, axis=0, keepdims=True)
+
+        a0 = data_train
+        z1 = np.matmul(a0, w1) + b1
+        a1 = sigmoid(z1)
+        z2 = np.matmul(a1, w2) + b2
+        a2 = sigmoid(z2)
+
+        train_accuracy = test_mlp(w1, b1, w2, b2, data_train, labels_train)
+        train_accuracies.append(train_accuracy)
+        print(f"Epoch {epoch + 1}/{num_epochs}, Loss: {loss:.4f}, Training Accuracy: {train_accuracy:.4f}")
+
+    test_accuracy = test_mlp(w1, b1, w2, b2, data_test, labels_test)
+
+    return train_accuracies, test_accuracy
+
diff --git a/read_cifar.py b/read_cifar.py
index 73fe59a..b1c8b2d 100644
--- a/read_cifar.py
+++ b/read_cifar.py
@@ -4,14 +4,12 @@ import os
 
 def read_cifar_batch(batch_path):
     with open(batch_path, 'rb') as file:
-        # Load the batch data
         batch_data = pickle.load(file, encoding='bytes')
 
-    # Extract data and labels from the batch
     data = batch_data[b'data']  # CIFAR-10 data
     labels = batch_data[b'labels']  # Class labels
 
-    # Convert data and labels to the desired data types
+    # Convertis data et label dans les types souhaités
     data = np.array(data, dtype=np.float32)
     labels = np.array(labels, dtype=np.int64)
 
@@ -22,34 +20,21 @@ def read_cifar(directory_path):
     data_batches = []
     label_batches = []
 
-    # Iterate through the batch files in the directory
     for batch_file in ['data_batch_1', 'data_batch_2', 'data_batch_3', 'data_batch_4', 'data_batch_5', 'test_batch']:
         batch_path = os.path.join(directory_path, batch_file)
 
-        with open(batch_path, 'rb') as file:
-            # Load the batch data
-            batch_data = pickle.load(file, encoding='bytes')
-
-        # Extract data and labels from the batch
-        data = batch_data[b'data']  # CIFAR-10 data
-        labels = batch_data[b'labels']  # Class labels
+        data, labels = read_cifar_batch(batch_path)
 
         data_batches.append(data)
-        label_batches.extend(labels)
+        label_batches.append(labels)
 
-    # Combine all batches into a single data matrix and label vector
+    # Concatene les données en une seule matrice et un seul vecteur
     data = np.concatenate(data_batches, axis=0)
-    labels = np.array(label_batches, dtype=np.int64)
-
-    # Convert data to the desired data type
-    data = data.astype(np.float32)
+    labels = np.concatenate(label_batches)
 
     return data, labels
 
 def split_dataset(data, labels, split):
-    # Check if the split parameter is within the valid range (0 to 1)
-    if split < 0 or split > 1:
-        raise ValueError("Split must be a float between 0 and 1.")
 
     # Get the number of samples in the dataset
     num_samples = len(data)
@@ -58,10 +43,10 @@ def split_dataset(data, labels, split):
     num_train_samples = int(num_samples * split)
     num_test_samples = num_samples - num_train_samples
 
-    # Create a random shuffle order for the indices
+    # Cree des permutations aléatoires
     shuffle_indices = np.random.permutation(num_samples)
 
-    # Use the shuffled indices to split the data and labels
+    # Mélange des données
     data_train = data[shuffle_indices[:num_train_samples]]
     labels_train = labels[shuffle_indices[:num_train_samples]]
     data_test = data[shuffle_indices[num_train_samples:]]
@@ -71,15 +56,12 @@ def split_dataset(data, labels, split):
 
 
 
-
-
-
-
-
 if __name__ == '__main__':
-    batch_path = "data/cifar-10-python\cifar-10-batches-py\data_batch_1"  # Update with your path
-    data, labels = read_cifar_batch(batch_path)
+    batch_path = "data/cifar-10-python\cifar-10-batches-py"
+    data, labels = read_cifar(batch_path)
     print("Data shape:", data.shape)
     print("Labels shape:", labels.shape)
+    split=0.9
+    data_train, labels_train, data_test, labels_test = split_dataset(data, labels, split)
 
 
diff --git a/results/knn.png b/results/knn.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b8526b22fe89b583153d7248d6dc77b64a43b94
GIT binary patch
literal 31893
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
TR@sGWPzvyL^>bP0l+XkKHnYSY

literal 0
HcmV?d00001

diff --git a/results/mlp.png b/results/mlp.png
new file mode 100644
index 0000000000000000000000000000000000000000..d350948b28266707c2fcd40988d16e15c21bc93d
GIT binary patch
literal 31623
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

literal 0
HcmV?d00001

-- 
GitLab