{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Wielowarstwowe sieci neuronowe\n", "\n", "[Keras](https://keras.io/) to zaawansowany pakiet do tworzenia sieci neuronowych w języku Python.\n", "Na komputerach wydziałowych powinien być zainstalowany.\n", "Na własnych komputerach pod Linuxem można go zainstalować poleceniem: `sudo pip install keras`.\n", "\n", "**Uwaga:** pierwsze uruchomienie zazwyczaj trwa jakiś czas, ponieważ pod spodem model kompiluje się jako aplikacja w C++. \n", "\n", "#### 1. Iris dataset\n", "\n", "Korzystając z [oficjalnej dokumentacji](http://keras.io) oraz materiałów szkoleniowych znalezionych w internecie (np. [machinelearningmastery.com](http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/)), zbuduj (co najmniej) dwuwarstwową sieć neuronową do klasyfkacji _Iris dataset_. Opisz stworzony model: architekturę sieci, jej rozmiar, zastosowane funkcje aktywacji, funkcję kosztu, wersję GD, metodę regularyzacji. Podaj wynik ewaluacji na zbiorze testowym.\n", "\n", "#### 2. MNIST\n", "\n", "Uruchom przykład `mnist_mlp.py` z [katalogu oficjalnych przykładów]( https://github.com/fchollet/keras/tree/master/examples) (warto ew. zmienić liczbę epok do 5). Posiłkując się dokumentacją, przeanalizuj kod i opisz:\n", "\n", "* Do jakiej postaci sprowadzane są dane `Y_train` i `Y_test`?\n", "* Przedstaw wzór matematyczny na zastosowaną funkcję błędu.\n", "* Jaka jest architektura sieci neuronowej? Ile ma warstw, jakie są rozmiary macierzy warstw? Czy można uzyskać dostęp do tych wag?\n", "* Jakie funkcje aktywacji użyto? Podaj ich wzory.\n", "* Czym jest `Dropout`? Czemu służy? Jakie znaczenie ma parametr?\n", "\n", "Zmodyfikuj model z przykładu `mnist_mlp.py` i wykonaj:\n", "\n", "* Usuń warstwy `Dropout`, jaki jest efekt?\n", "* Stwórz 6-cio warstwowy model o rozmiarach warstw 2500, 2000, 1500, 1000, 500 oraz 10 bez `Dropout`, użyj wszędzie funkcji aktywacji `tanh` z wyjątkiem ostatniej warstwy, gdzie należy użyć `softmax`. Trenuj model przez 10 epok.\n", "* Dodaj warstwy `Dropout`, porównaj jakość po 10 epokach, krótko opisz wnioski.\n", "* Zamiast `RMSprop` użyj algorytm `Adagrad`, porównaj jakość, krótko opisz wnioski. " ] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }