Мы с вами уже рассмотрели две архитектуры нейронных сетей, которые решают достаточно сложную задачу ImageNet 1000. Сейчас мы рассмотрим с вами ещё более сложные архитектуры, которые эту задачу решают ещё лучше, чем те которые были предложены немного ранее. Стоит отметить, что эти архитектуры используют несколько очень интересных трюков. Итак в первую очередь рассмотрим блок, который называется "inception block". Идея inception блока состоит в том, что возможно, что мы хотим сделать не одну операцию к входу, например, в свёртку, а несколько разных и посмотреть, каков будет результат применения, например -- свёртки 1 на 1? Например -- свёртки 3 на 3 ко входу? Например, свёртки 5 на 5 ко входу? Или, например, применения операции макс пулинга ко входу в наш блок. Вот эту задачу решает Inception блок. Вот это -- то, что получается на предыдущем слое. Inception блок делает параллельно несколько операций. Во-первых, он делает какие-то свёртки размером 1 на 1. Затем рассматривается вариант, когда делается сначала свёртка 1 на 1, а затем делается свёртка 3 на 3. Кроме того ещё можно рассмотреть вариант, когда делается сначала свёртка 1 на 1, затем свёртка 5 на 5 и другой вариант, когда делается макс пулинг размером 3 на 3 со страйдом 1, затем делается свёртка размером 1 на 1, и выдается результат. И после этого все результаты всех параллельных блоков конкатенируются. Стоит отметить, что каждый из этих блоков выдаёт картинку, которая имеет одинаковый размер, то есть если отсюда выходит картинка размером 128 на 128, значит из всех остальных блоков тоже выходит картинка размером 128 на 128. Если, например, отсюда выходит 10 каналов, из вот этого пути выходит 20 каналов, из этого 30 а из этого снова 10, то какое количество каналов выйдет из Inception блока?

К сожалению, у нас пока нет статистики ответов на данный вопрос, но мы работаем над этим.