diff --git a/tutoriaux/CNN/CNN_a_completer.ipynb b/tutoriaux/CNN/CNN_a_completer.ipynb index 5272b65..b7efb50 100644 --- a/tutoriaux/CNN/CNN_a_completer.ipynb +++ b/tutoriaux/CNN/CNN_a_completer.ipynb @@ -835,6 +835,7 @@ "\n", "\n", "Dans `forward(input)` on applique aux données d'entrée les différentes couches définies dans `__init__` les unes après les autres.\n", + "Il est aussi nécessaire de changer la forme des données juste avant l'appel à la couche linéaire, celle-ci n'acceptant que des données uni-dimensionelles. Il est possible d'utiliser `torch.Tensor.view(new_shape)` pour cela.\n", "\n", "Enfin, `model.to(\"cuda:0\")` permet de passer le modèle sur GPU.\n", "\n", @@ -1189,7 +1190,7 @@ "id": "OFj_W39u5voa" }, "source": [ - "## Méthodes pratique pour améliorer l'entraînement " + "## Méthodes pratiques pour améliorer l'entraînement" ] }, { @@ -1200,7 +1201,7 @@ }, "source": [ "### Batch normalization\n", - "Le *batch normalization* est une astuce qui permet, en pratique, au modèle d'apprendre plus vite. Elle agit comme régularisateur en normalisant les entrées par batch, de manière différentiable.\n", + "Le *batch normalization* est une astuce qui permet, en pratique, au modèle d'apprendre plus vite. Elle agit comme régularisateur en normalisant les entrées par batch, de manière différentiable. Les données en sorties de cette couche auront une moyenne proche de 0 et une variance proche de 1.\n", "\n", "![Alt Text](https://github.com/mila-iqia/ecole_dl_mila_ivado_2018_10/blob/master/tutoriaux/CNN/images/1_Hiq-rLFGDpESpr8QNsJ1jg.png?raw=true)\n", "\n", @@ -1208,13 +1209,12 @@ "Pour plus d'informations sur le *Batch Normalization*, consultez cet [article](https://arxiv.org/pdf/1502.03167v3.pdf).\n", "\n", "### Boîte à outils\n", - "Pour ajouter la batch normalisation dans LeNet5, il suffit de l'ajouter parmis les couches de l'`__init__`. La classe suivante peut être utilisée:\n", + "Pour ajouter la batch normalisation dans LeNet5, il suffit de l'ajouter parmis les couches de l'`__init__` et de l'appeler après chaque couche de convolution. La classe suivante peut être utilisée:\n", "\n", "\n", - "### Implémentation\n", - "Ci-dessous vous pouvez remarquer que la classe LeNet5 a été modifiée pour y ajouter la batch normalisation." + "### Implémentation\n" ] }, { @@ -1505,7 +1505,7 @@ " root = os.path.join(root, split_type)\n", "\n", " for classes in sorted(os.listdir(root)):\n", - " images[classes] = []\n", + " images[classes] = []\n", " path_classes = os.path.join(root, classes)\n", "\n", " for root_, _, fnames in sorted(os.walk(path_classes)):\n", diff --git a/tutoriaux/CNN/CNN_solutions.ipynb b/tutoriaux/CNN/CNN_solutions.ipynb index 5ff3b26..68385fb 100644 --- a/tutoriaux/CNN/CNN_solutions.ipynb +++ b/tutoriaux/CNN/CNN_solutions.ipynb @@ -835,6 +835,7 @@ "\n", "\n", "Dans `forward(input)` on applique aux données d'entrée les différentes couches définies dans `__init__` les unes après les autres.\n", + "Il est aussi nécessaire de changer la forme des données juste avant l'appel à la couche linéaire, celle-ci n'acceptant que des données uni-dimensionelles. Il est possible d'utiliser `torch.Tensor.view(new_shape)` pour cela.\n", "\n", "Enfin, `model.to(\"cuda:0\")` permet de passer le modèle sur GPU.\n", "\n", @@ -1201,7 +1202,7 @@ "id": "OFj_W39u5voa" }, "source": [ - "## Méthodes pratique pour améliorer l'entraînement " + "## Méthodes pratiques pour améliorer l'entraînement" ] }, { @@ -1212,7 +1213,7 @@ }, "source": [ "### Batch normalization\n", - "Le *batch normalization* est une astuce qui permet, en pratique, au modèle d'apprendre plus vite. Elle agit comme régularisateur en normalisant les entrées par batch, de manière différentiable.\n", + "Le *batch normalization* est une astuce qui permet, en pratique, au modèle d'apprendre plus vite. Elle agit comme régularisateur en normalisant les entrées par batch, de manière différentiable. Les données en sorties de cette couche auront une moyenne proche de 0 et une variance proche de 1.\n", "\n", "![Alt Text](https://github.com/mila-iqia/ecole_dl_mila_ivado_2018_10/blob/master/tutoriaux/CNN/images/1_Hiq-rLFGDpESpr8QNsJ1jg.png?raw=true)\n", "\n", @@ -1220,13 +1221,12 @@ "Pour plus d'informations sur le *Batch Normalization*, consultez cet [article](https://arxiv.org/pdf/1502.03167v3.pdf).\n", "\n", "### Boîte à outils\n", - "Pour ajouter la batch normalisation dans LeNet5, il suffit de l'ajouter parmis les couches de l'`__init__`. La classe suivante peut être utilisée:\n", + "Pour ajouter la batch normalisation dans LeNet5, il suffit de l'ajouter parmis les couches de l'`__init__` et de l'appeler après chaque couche de convolution. La classe suivante peut être utilisée:\n", "\n", "\n", - "### Implémentation\n", - "Ci-dessous vous pouvez remarquer que la classe LeNet5 a été modifiée pour y ajouter la batch normalisation." + "### Implémentation\n" ] }, { @@ -1563,7 +1563,7 @@ " root = os.path.join(root, split_type)\n", "\n", " for classes in sorted(os.listdir(root)):\n", - " images[classes] = []\n", + " images[classes] = []\n", " path_classes = os.path.join(root, classes)\n", "\n", " for root_, _, fnames in sorted(os.walk(path_classes)):\n",