diff --git a/TP6/TP6_ex1_sujet.ipynb b/TP6/TP6_ex1_sujet.ipynb
index edcbd93c20a4019f50c83864d94825e210f6a0c9..9407cb030cad9f593288a632df0ec8d8983ca636 100644
--- a/TP6/TP6_ex1_sujet.ipynb
+++ b/TP6/TP6_ex1_sujet.ipynb
@@ -14,7 +14,7 @@
     "\n",
     "Le but de ce TP est de découvrir une application de la [vision par ordinateur](https://en.wikipedia.org/wiki/Computer_vision), la classification d'images.\n",
     "\n",
-    "On utilisera un sous-ensemble de la [base de données Caltech256](https://data.caltech.edu/records/nyy15-4j048), constitué d'images appartenant à 7 catégories, disponible [à cette URL](https://members.loria.fr/FSur/enseignement/apprauto/Caltech256_small.zip) (disponible aussi sur Arche). La base de donnée est volontairement réduite pour rester gérable pendant un TP, mais vous pouvez bien entendu tenter de traiter la base entière sur votre temps libre.\n",
+    "On utilisera un sous-ensemble de la [base de données Caltech256](https://data.caltech.edu/records/nyy15-4j048), constitué d'images appartenant à 7 catégories, disponible sur Arche (et aussi [à cette URL](https://members.loria.fr/FSur/enseignement/apprauto/Caltech256_small.zip)). La base de donnée est volontairement réduite pour rester gérable pendant un TP, mais vous pouvez bien entendu tenter de traiter la base entière sur votre temps libre.\n",
     "\n",
     "<br>\n",
     "Commencez par charger et décompresser cette base d'images dans votre répertoire de travail, et visualisez les images qu'elle contient.\n",
@@ -25,7 +25,7 @@
     "\n",
     "Les images ont des tailles différentes, de l'ordre de 300x200 pixels (certaines images, rares, ont des tailles de plus de 1000x1000 pixels). Ce sont des images en couleur, un pixel est donc décrit par un triplet de composantes Rouge, Vert, Bleu. Les composantes prennent des valeurs entre 0 et 255 (codage sur 8 bits), de manière à ce que (0,0,0) soit le noir, (255,255,255) le blanc, (0,255,0) le vert \"pur\", etc. Chaque image est donc décrite par approximativement 3x300x200=120000 valeurs variant entre 0 et 255. \n",
     "\n",
-    "Le défi est de réduire la dimension des observations, en extrayant de chaque image une information pertinente représentée dans un espace de dimension \"raisonnable\", commun à toutes les images. Nous allons utiliser une méthode inspirée de celle présentée dans [cet article](https://chapelle.cc/wp-content/uploads/2022/09/tnn99.pdf) très célèbre de 1999: chaque image sera représentée par un vecteur de ${\\mathbb R}^{8^3}={\\mathbb R}^{512}$ obtenu en concaténant les histogrammes tridimensionnels des triplets (R,V,B) en chaque pixel, chaque composante étant discrétisée sur 8 \"baquets\" ( _bins_ ). "
+    "Le défi est de réduire la dimension des observations, en extrayant de chaque image une information pertinente représentée dans un espace de dimension \"raisonnable\", commun à toutes les images. Nous allons utiliser une méthode inspirée de celle présentée dans [cet article](https://members.loria.fr/FSur/enseignement/apprauto/chapelle99SVM.pdf) très célèbre de 1999: chaque image sera représentée par un vecteur de ${\\mathbb R}^{8^3}={\\mathbb R}^{512}$ obtenu en concaténant les histogrammes tridimensionnels des triplets (R,V,B) en chaque pixel, chaque composante étant discrétisée sur 8 \"baquets\" ( _bins_ ). "
    ]
   },
   {
@@ -154,7 +154,7 @@
     "\n",
     "Le code est adapté de: https://staff.fnwi.uva.nl/r.vandenboomgaard/IPCV20172018/LectureNotes/IP/Images/ImageHistograms.html\n",
     "\n",
-    "Constatez le lien entre l'allure de l'histogramme  (que vous pouvez \"tourner\" à la souris) et le contenu de l'image.\n",
+    "Constatez le lien entre l'allure de l'histogramme  (que vous pouvez \"tourner\" à la souris si vous n'avez pas dû passer en mode `inline`) et le contenu de l'image.\n",
     "\n",
     "<br>\n",
     "\n",
@@ -304,8 +304,8 @@
     "alpha_range=10**np.arange(-4.,4.5,1)\n",
     "parameters = {'alpha':alpha_range }\n",
     "\n",
-    "# Vous pouvez avoir des avertissements sur des problèmes de convergence:\n",
-    "# n'y passez pas trop de temps (on améliorera les résultats dans l'exercice 2)\n",
+    "# Vous aurez sans doute des avertissements sur des problèmes de convergence.\n",
+    "# Néanmoins, on souhaite garder des temps de calculs raisonnables et on améliorera les résultats dans l'ex 2\n",
     "\n",
     "# votre code ici:\n"
    ]
@@ -374,7 +374,7 @@
     "\n",
     "## Compléments d'information (après la séance de TD)\n",
     "\n",
-    "L'[article](https://chapelle.cc/wp-content/uploads/2022/09/tnn99.pdf) de Chapelle et al. cité en introduction teste différents noyaux pour les SVM. On voit que la SVM avec noyau du $\\chi^2$ est parmi les plus performantes. Notons que la base de données de cet article est différente de celle que nous utilisons.\n",
+    "L'[article](https://members.loria.fr/FSur/enseignement/apprauto/chapelle99SVM.pdf) de Chapelle et al. cité en introduction teste différents noyaux pour les SVM. On voit que la SVM avec noyau du $\\chi^2$ est parmi les plus performantes. Notons que la base de données de cet article est différente de celle que nous utilisons.\n",
     "\n",
     "\n",
     "<br>\n",
@@ -392,7 +392,7 @@
     "<br>\n",
     "\n",
     "_Références bibliographiques:_\n",
-    "- O. Chapelle, P. Haffner, V. Vapnik. _SVMs for Histogram-Based Image Classification_, IEEE Transactions on Neural Networks, vol. 10, no. 5, 1999.\n",
+    "- O. Chapelle, P. Haffner, V. Vapnik. _Support Vector Machines for Histogram-Based Image Classification_, IEEE Transactions on Neural Networks, vol. 10, no. 5, 1999.\n",
     "- C. Fowlkes, S. Belongie, F. Chung, J. Malik. _Spectral Grouping Using the Nyström Method_, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 26, no. 2, 2004."
    ]
   },
@@ -420,7 +420,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.9.13"
+   "version": "3.11.5"
   }
  },
  "nbformat": 4,
diff --git a/TP6/TP6_ex2_correc.ipynb b/TP6/TP6_ex2_correc.ipynb
index ee608e53109f72315fe42cf342825b8e89f03f4c..c0d05ffe1dcf64014196e841bce26feb608b5c59 100644
--- a/TP6/TP6_ex2_correc.ipynb
+++ b/TP6/TP6_ex2_correc.ipynb
@@ -252,16 +252,14 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "metadata": {
-    "scrolled": false
-   },
+   "metadata": {},
    "outputs": [],
    "source": [
     "# résumé du modèle précédemment défini:\n",
     "model.summary()\n",
     "\n",
-    "# affichage graphique\n",
-    "plot_model(model,  show_shapes=True)\n"
+    "# affichage graphique (si graphviz et pydot correctement installés)\n",
+    "# plot_model(model,  show_shapes=True)\n"
    ]
   },
   {
@@ -310,9 +308,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "metadata": {
-    "scrolled": false
-   },
+   "metadata": {},
    "outputs": [],
    "source": [
     "from sklearn import metrics\n",
@@ -356,9 +352,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "metadata": {
-    "scrolled": false
-   },
+   "metadata": {},
    "outputs": [],
    "source": [
     "adv_example=np.zeros([1, 100, 150, 3])\n",
@@ -392,7 +386,7 @@
     "\n",
     "L'objectif de cette expérience très simple est d'illustrer que la perception humaine n'a rien à voir avec la classification algorithmique.\n",
     "\n",
-    "Relancez plusieurs fois la cellule: vous voyez que la classe affectée à notre exemple adversarial change, et que quelques pixels suffisent à tromper le modèle. A quelques pixels près, un avion est reconnu comme un cheval...\n",
+    "Relancez plusieurs fois la cellule: vous voyez que la classe affectée à notre exemple adversarial peut changer, et que quelques pixels suffisent à tromper le modèle. A quelques pixels près, un avion est reconnu comme un cheval...\n",
     "\n",
     "En fait on triche un peu ici: on autorise des modifications des valeurs des pixels entre 0 et M=10, alors que les composantes RVB des \"vraies\" images varient entre 0 et 1.\n",
     "\n",
@@ -425,9 +419,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "metadata": {
-    "scrolled": false
-   },
+   "metadata": {},
    "outputs": [],
    "source": [
     "from tensorflow.keras import applications\n",
@@ -438,7 +430,7 @@
     "\n",
     "modelVGG.summary()\n",
     "\n",
-    "plot_model(modelVGG,  show_shapes=True)"
+    "#plot_model(modelVGG,  show_shapes=True)"
    ]
   },
   {
@@ -538,9 +530,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "metadata": {
-    "scrolled": false
-   },
+   "metadata": {},
    "outputs": [],
    "source": [
     "model_classif.fit(features_train, Y_train, epochs=10, batch_size=16, validation_data=(features_test, Y_test))\n",
@@ -589,9 +579,7 @@
   {
    "cell_type": "code",
    "execution_count": null,
-   "metadata": {
-    "scrolled": false
-   },
+   "metadata": {},
    "outputs": [],
    "source": [
     "adv_example=np.zeros([1, 100, 150, 3])\n",
@@ -653,7 +641,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Ensuite on cherche la valeur optimale pour l'hyperparamètre $C$:"
+    "Ensuite on cherche la valeur optimale pour l'hyperparamètre $C$ (peut prendre une à deux minutes):"
    ]
   },
   {
@@ -712,7 +700,7 @@
     "\n",
     "L'enseignement principal est que les performances de l'apprentissage profond (en particulier des CNN) vient du calcul \"automatique\" de descripteurs bien adaptés. En effet, on voit dans cette expérience particulière que si on remplace la partie classifieur par une SVM on obtient également d'excellents résultats. \n",
     "\n",
-    "Lorsqu'on entraîne \"de zéro\" (sans _transfer learning_), il n'est pas possible de procéder ainsi: il faut tout faire avec un réseau de neurones pour entraîner le modèle (images en entrée, probabilité des classes en sortie) à l'aide de la rétropropagation."
+    "Lorsqu'on entraîne \"de zéro\" (sans _transfer learning_), il n'est pas possible de procéder ainsi: il faut tout faire avec un seul réseau de neurones ayant une partie \"convolution\" (calculant un descripteur) et une partie \"fully connected\" (faisant la classification)."
    ]
   },
   {
@@ -739,9 +727,9 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.10.8"
+   "version": "3.11.5"
   }
  },
  "nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
 }
diff --git a/TP6/TP6_ex3_sujet.ipynb b/TP6/TP6_ex3_sujet.ipynb
index 8518c19891d7894fa1b9cd926751b8c8de08f05d..42e1c94acf524098890944c6c31624b1aef07ae0 100644
--- a/TP6/TP6_ex3_sujet.ipynb
+++ b/TP6/TP6_ex3_sujet.ipynb
@@ -98,7 +98,9 @@
     "X_train = X_train.reshape((len(X_train),)+size_images+(1,))\n",
     "X_test = X_test.reshape((len(X_test),)+size_images+(1,))\n",
     "y_train = y_train.astype(int)\n",
-    "y_test = y_test.astype(int)\n"
+    "y_test = y_test.astype(int)\n",
+    "print(X_train.shape)\n",
+    "print(X_test.shape)"
    ]
   },
   {
@@ -141,7 +143,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.12"
+   "version": "3.11.5"
   }
  },
  "nbformat": 4,