Git Product home page Git Product logo

deep-learning-course-practice's Introduction

Репозиторий для публикации результатов выполнения лабораторных работ по курсу "Глубокое обучение"

Цели работы

Цель настоящей работы состоит в том, чтобы изучить метод обратного распространения ошибки для обучения глубоких нейронных сетей на примере двухслойной полностью связанной сети (один скрытый слой).

Задачи работы

Выполнение работы предполагает решение следующих задач:

  1. Изучение общей схемы метода обратного распространения ошибки на базе стохастического градиентного спуска.
  2. Вывод математических формул для вычисления градиентов функции ошибки по параметрам нейронной сети и формул коррекции весов.
  3. Проектирование и разработка программной реализации метода обратного распространения ошибки.
  4. Тестирование разработанной программной реализации.
  5. Разработка примера использования метода обратного распространения ошибки для классификации рукописных цифр из набора данных MNIST [http://yann.lecun.com/exdb/mnist].

Метод обратного распространения ошибки разрабатывается, исходя из следующих предположений:

  1. На входе сети имеется w×h нейронов, что соответствует разрешению одноканального изображения (параметр; для изображений в базе MNIST составляет 28x28).
  2. На выходе сети имеется k нейронов, что соответствует количеству классов изображений (параметр; для задачи классификации рукописных цифр – 10 классов).
  3. Скрытый слой содержит s нейронов (параметр).
  4. В качестве функции активации на скрытом слое используется функция ReLU.
  5. В качестве функции активации на выходном слое используется функция softmax.
  6. В качестве функции ошибки используется кросс-энтропия.
  7. Скорость обучения, размер пачки данных, количество эпох являются параметрами метода обучения.

Требования к результатам выполнения работы

  1. Разработана корректная программная реализация метода для рассматриваемой архитектуры нейронной сети и приложение для решения задачи классификации рукописных цифр на примере базы MNIST на языке Python 3 (например, в Jupiter Notebook). В результате сформирован скрипт в формате .ipynb с выдачей промежуточных результатов на контрольном наборе параметров (приведен ниже). Скрипт должен отображать ошибку классификации на тренировочном наборе данных в процессе обучения по окончании каждой эпохи и время обучения. По завершении всех эпох скрипт должен выдавать ошибку классификации на тестовом наборе данных.
  2. Скрипт сконвертирован в формат .html внутренними средствами использованной среды разработки. Сконвертированный скрипт содержит результаты, полученные на контрольном наборе параметров.
  3. Подготовлен текстовый файл в формате Markdown README.md, в котором приведена в виде таблицы информация о результатах решения задачи классификации рукописных цифр на наборе данных MNIST: ФИО студента, количество нейронов на скрытом слое, скорость обучения модели, количество эпох, время обучения (в секундах), ошибка классификации на тренировочном наборе данных, ошибка классификации на тестовом наборе данных. Таблица обязательно должна содержать результаты работы на контрольном наборе параметров. Результаты других запусков добавляются на усмотрение слушателя.
ФИО Hidden neurons Learning rate Number of epochs Time, s Train accuracy Test accuracy
Иванов Иван Иванович 200 0.1 10 20 0.98 0.92
  1. Для контрольных значений параметров достигнута точность классификации на тестовых данных, сравнимая с точностью, которую выдают стандартные инструменты глубокого обучения (например, библиотеки MXNet или PyTorch).
  2. Скрипт в формате .ipynb, его сконвертированная копия в формате .html и текстовый файл README.md выложены в собственный fork публичного GitHub-репозитория [https://github.com/UNN-ITMM-Software/deep-learning-course-practice]. При этом все файлы должны находиться в директории с названием FamiliaIO (например, IvanovII). Также должен быть создан Pull Request в основной репозиторий с готовой работой, Pull Request должен иметь название Фамилия Имя Отчество – ФИО студента, выполнившего работу.

Контрольный набор параметров: размер пачки может меняться от 8 до 64 изображений (в зависимости от доступного объема памяти), скорость обучения составляет 0.1, количество скрытых нейронов – 300, количество эпох – 20.

Результаты решения задачи

Контрольный набор параметров

Hidden neurons Learning rate Number of epochs
300 0.1 20

Полученные результаты

ФИО Time, s Train accuracy Test accuracy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.