Эта статья предназначена для документирования стандартного и шаблонного кода CNN на основе классического набора данных MNIST. Те, кто знает о CNN, могут продолжить чтение, если вы не знаете, вы можете прочитать позже.

Просто возьмите чашку кофе ☕️, чтобы погрузиться в глубокое обучение и сверточные сети с другим ресурсом.

Связанное чтение с изображением в формате GIF (DCNN) https://teetracker.medium.com/an-illustration-gif-to-explain-deep-convolutional-networks-dcnn-da4cef557c9d

Архитектура

Самая классическая CNN состоит в том, чтобы вводить изображение, затем передавать его функции/слою свертки, затем функции/слою пула, мы называем это один раз conv-pool, затем передаем промежуточный вывод в другую функцию свертки, затем еще один пул и и так далее, с молчаливым соглашением, что количество фильтров/ядер, используемых для каждой свертки, будет увеличиваться, а ввод «картинка/изображение» будет уменьшаться после каждого пула (понижающей выборки).

Свести последний сверточный пул приводит к N «нейронам» и «полностью подключенным» к M «нейронам», к которым также можно добавить «X нейронов», полностью подключенных (осторожно, это может привести к переоснащению), а конечный результат подвергается операции softmax, которая представляет собой еще один полносвязный слой для генерации вероятности каждой цели, то есть вероятность того, что входное изображение равно (0, 1, 2, 3, 4, 5, 6, 7, 9).

Примечание: это классический прием, не совсем правильный.

Заключите выше в нашем примере:

0) Входные данные — набор данных MNIST
1) Сверточный и максимальный пул (1-й раз)
2) Сверточный и максимальный пул (2-й раз)
3) Полносвязный слой (сведение)
4) Обработка — отсев (избегайте сильного переобучения)
5) Слой считывания — полностью подключен
6) Выходы — классифицированные цифры

Выполнение

  • (Ввод) -> [batch_size, 28, 28, 1], применить фильтр 32 из [5x5]
  • (Сверточный слой 1) -> [batch_size, 28, 28, 32]

  • (ReLU 1) -> [?, 28, 28, 32]
  • (Макс. объединение 1) -> [?, 14, 14, 32]

  • (Сверточный слой 2) -> [?, 14, 14, 64]
  • (ReLU 2) -> [?, 14, 14, 64]
  • (Макс. объединение 2) -> [?, 7, 7, 64]
  • [полностью подключенный слой 3] -> [1x1024]
  • [ReLU 3] -> [1x1024]
  • [Выпадение] -> [1x1024]
  • [полностью подключенный слой 4] -> [1x10]

Стоимость, потери для softmax на последнем полностью подключенном слое

кросс-энтропия

Проверьте скелет