Требуется решить задачу классификации изображений на 10 классов c использованием нейронных сетей.
CIFAR-10: https://www.cs.toronto.edu/~kriz/cifar.html
Реализация обучаемого классификатора на базе нейронной сети дожна быть выполнена самостоятельно на языке Python. Можно использовать только встроенный функционал и базовые операции над векторами и матрицами из библиотеки Numpy (нельзя использовать автоматическое дифференцирование).
Необходимо самостоятельно реализовать:
- Слои для прямого хода и обратного распространения ошибки;
- Оптимизатор, поддерживающий батчи (модификация SGD);
- Метод инициалиазации весов нейронной сети (тренировка должна выполнять со "случайных" весов).
- Подходящую функцию потерь.
Нейронная сеть должна состоять минимум из 2х скрытых слоев с функцией активации. Несколько примеров:
- Image -> Fully connected (X outputs) -> Sigmoid -> Fully connected (Y outputs) -> Sigmoid -> Fully connected (10 outputs) -> Sigmoid -> Loss.
- Image -> Convolution (X output channels) -> ReLU -> Convolution (Y output channels) -> ReLU -> Fully connected (10 outputs) -> Softmax -> Loss.
- Выполнить реализацию нейронной сети, слоёв, активаций, оптимизатора, методов аугментации данных.
Раздел
2. NN implementation, layers, activations, loss functions and optimizer
в шаблонеtask2_template.ipynb
. - Проверить корректности реализованной сети.
Сеть должна быстро переобучаться при тренировке на 1ой картинке, на 10ти картинках.
Раздел
3. Check correctness
в шаблонеtask2_template.ipynb
. - Выполнить тренировку нейронной сети (не забывайте про изменение LR).
Раздел
4. Experiments
в шаблонеtask2_template.ipynb
. - Указать наилучшую архитектуру и достигнутое качество на тестовом датасете.
Раздел
5. Results
в шаблонеtask2_template.ipynb
.
- Выполнена реализация обучаемой нейронной сети для задачи классификации изображений.
- Нейронная сеть содержит минимум 2 скрытых слоя (см. выше), одну функцию активации и реализацию модификации SGD.
- Получено качество на тестовом датасете CIFAR-10, заполнены все поля в разделе
5. Results
(шаблонtask2_template.ipynb
).
- Достигнутое качество на тестовом датасете.
- Сложность используемых слоёв (будет плюсом, если реализовать Convolution, BathNorm, ReLU, ELU, Depthwise convolution и др.).
- Необходимо отправить письмо с заголовком "Deep Learning - Task 2" на e-mail [email protected].
- К письму необходимо прекрепить ipynb (все внешние зависимости должны быть указаны в notebook'е) и pdf/html с решением задачи.
Файлы должны называться
ФамилияИмя.ipynb
,ФамилияИмя.html
, например:SidnevAlexey.ipynb
. - Необходимо создать Pull Request в репозиторий
https://github.com/dl-unn/dl-unn.github.io
с указанием архитектуры сети и достигнутого качества (файл results).
Deadline: 23:59 5.11.2020