Что такое pooling
Перейти к содержимому

Что такое pooling

  • автор:

Перевод «pooling» на русский

Такое объединение региональных ресурсов позволяет обеспечить как повышение эффективности управления, так и сокращение расходов.

Our joint task is to jointly seek a response to this challenge through pooling our efforts and strengthening international cooperation.

Наша общая задача — совместно искать ответ на этот вызов, через объединение наших усилий и укрепление международного сотрудничества.

They can thus become useful bridges for channelling assistance and pooling local resources.

Таким образом, они могут стать эффективным связующим звеном в деле оказания помощи и объединения местных ресурсов.

Greater regional cooperation could facilitate risk sharing by pooling reserves and thus strengthen South-South financial flows.

Расширение регионального сотрудничества могло бы способствовать распределению рисков посредством объединения резервов и таким образом позволило бы увеличить финансовые потоки по линии Юг-Юг.

Smart Defence is an initiative to help Allies generate defence capabilities by harmonising requirements and pooling resources.

«Умная оборона» это инициатива, призванная помочь странам НАТО в формировании оборонных сил и средств посредством унификации требований и объединения ресурсов.

The nutrition laboratories on both sides of the border have rapidly appreciated the advantages of pooling their research.

Питание лабораторий по обе стороны границы были быстро оценили преимущества объединения своих исследований.

We also see the development of cooperation through the pooling of our experts.
Также мы видим развитие сотрудничества посредством объединения наших экспертов».

Reform is never easy, particularly when it involves pooling sovereignty and sharing responsibility on a supranational level.

Реформы никогда не бывают легкими, особенно если они связаны с объединением суверенитетов и разделением ответственности на наднациональном уровне.

Basically it’s an easy way of pooling resources to the benefit of all.
В основном это простой способ объединения ресурсов на благо всех.
More debt socialisation and pooling of risks, some say.
Больше долговой социализации и объединения рисков, говорят одни.

Government programs to encourage car pooling, emissions inspection, and mass transportation have had limited success in major cities.

Правительственные программы поощрения объединения автомобилей, инспекции выбросов и массового транспорта имели ограниченный успех в крупных городах.

The pooling of financial resources is possible through inter-municipal agreements.
Объединение финансовых ресурсов возможно посредством межмуниципальных соглашений.

The interests of common survival require pooling the forces, resources and comparative advantages of each country.

Интересы совместного выживания требуют объединения сил и ресурсов, сравнительных преимуществ каждой страны.

Thus, by pooling our experience we can better help our unascended brothers and sisters.

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

The idea of pooling resources among producer enterprises is not a new one.
Идея объединения ресурсов предприятий-производителей сама по себе не нова.

Further budget reductions could be achieved by examining more efficient ways of operating, such as outsourcing, cost-sharing and pooling administrative functions.

Дальнейшие бюджетные сокращения могли бы быть реализованы за счет более эффективной организации работы, например, путем привлечения внешних подрядчиков, совместного несения расходов и объединения административных функций.

Solutions to these problems require close cooperation between countries, including the pooling of their financial resources.

Решение этих проблем требует тесного сотрудничества между странами, в том числе объединения их финансовых ресурсов.

Specialized training institutions were essential as they enabled the requisite pooling of expertise and know-how at the international level to upgrade operational performance.

Важнейшую роль в этой деятельности сыграли специализированные учреждения по подготовке кадров, поскольку они позволили провести необходимое объединение специальных знаний и опыта, а также ноу-хау на международном уровне в целях повышения качества оперативной деятельности.

Never since human beings first timidly entered space has the political and economic climate been so conducive to pooling international resources for extra-planetary discovery and research.

Начиная с того момента, когда люди впервые робко вошли в космическое пространство, никогда не было столь благоприятных политических и экономических условий для объединения международных ресурсов для межпланетных открытий и исследований.

Among other problems, it is stifled by the shallowness of financial markets that renders the effective pooling of risks very difficult.

Наряду с другими проблемами это обстоятельство усугубляется неразвитостью финансовых рынков, что очень сильно затрудняет эффективное объединение рисков.

Возможно неприемлемое содержание

Примеры предназначены только для помощи в переводе искомых слов и выражений в различных контекстах. Мы не выбираем и не утверждаем примеры, и они могут содержать неприемлемые слова или идеи. Пожалуйста, сообщайте нам о примерах, которые, на Ваш взгляд, необходимо исправить или удалить. Грубые или разговорные переводы обычно отмечены красным или оранжевым цветом.

Принцип работы свёрточных нейронных сетей

Глубокие нейронные сети привели к прорыву во множестве задач распознавания образов, таких как компьютерное зрение и распознавание голоса. Сверточная нейронная сеть один из популярных видов нейронных сетей.

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

2D сверточная нейронная сеть

Этот приём с несколькими копиями одного и того же нейрона имеет близкую аналогию с абстракцией функций в математике и информатике. При программировании функция пишется один раз и затем повторно используется, не требуя писать один и тот же код множество раз в разных местах, что ускоряет выполнение программы и уменьшает количество ошибок. Аналогично сверточная нейронная сеть, однажды обучив нейрон, использует его во множестве мест, что облегчает обучение модели и минимизирует ошибки.

Структура сверточных нейронных сетей

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

На входе получаем образцы аудио в разные моменты времени. Образцы равномерно распределены.

Подпишись на рассылку новостей о AI

Только полезные материалы о машинном обучении и искусственном интеллекте. Мы уважительно относимся к нашим читателям и рассылаем письма не чаше 1 раза в неделю!

Самый простой способ классифицировать их с нейронной сетью — подключить все образцы к полносвязному слою. При этом каждый вход соединяется с каждым нейроном.

Более сложный подход учитывает некоторую симметрию в свойствах, которые которая находится в данных. Мы уделяем много внимания локальным свойствам данных: какая частота звука в течение определенного времени? Увеличивается или уменьшается? И так далее.

Мы учитываем те же свойства во все моменты времени. Полезно знать частоты вначале, середине и в конце. Обратите внимание, что это локальные свойства, поскольку нужно только небольшое окно аудиопоследовательности, чтобы определить их.

Таким образом, возможно создать группу нейронов A, которые рассматривают небольшие сегменты времени в наших данных. A смотрит на все такие сегменты, вычисляя определенные функции. Затем, выход этого сверточного слоя подается в полносвязный слой F.

В приведенном выше примере A обрабатывало только сегменты, состоящие из двух точек. Это редко встречается на практике. Обычно, окно слоя свертки намного больше.

В следующем примере A получает на вход 3 отрезка. Это тоже маловероятно для реальных задач, но, к сожалению, сложно визуализировать A, соединяющее множество входов.

Одно приятное свойство сверточных слоев состоит в том, что они являются составными. Можно подавать вывод одного сверточного слоя в другой. С каждым слоем сеть обнаруживает более высокие, более абстрактные функции.

В следующем примере есть новая группа нейронов B. B используется для создания еще одного сверточного слоя, уложенного поверх предыдущего.

Сверточные слои часто переплетены pooling (объединяющими) слоями. В частности, есть вид слоя, называемый max-pooling, который чрезвычайно популярен.

Часто, нас не волнует точный момент времени, когда присутствует полезный сигнал в данных. Если изменение частоты сигнала происходит раньше или позже, имеет ли это значение?

Max-pooling вбирает максимум фичей из небольших блоков предыдущего уровня. Вывод говорит, присутствовал ли полезный сигнал функции в предыдущем слое, но не точно где.

Max-pooling слоев — это «уменьшение». Оно позволяют более поздним сверточным слоям работать на больших участках данных, потому что небольшие патчи после слоя объединения соответствует гораздо большему патчу перед ним. Они также делают нас инвариантными к некоторым очень небольшим преобразованиям данных.

В наших предыдущих примерах использовались одномерные сверточные слои. Однако сверточные слои могут работать и с более объемными данными. Фактически самые известные решения на базе сверточных нейронных сетей используют двумерные сверточные нейронные сети для распознавания образов. .

В двумерном сверточном слое вместо того, чтобы смотреть на сегменты, A будет смотреть патчи.

Для каждого патча, A будет вычислять функции. Например, она может научиться обнаруживать наличие края, или текстуру, или контраст между двумя цветами.

В предыдущем примере вывод сверточного слоя подавался в полносвязный слой. Но, возможно составить два сверточных слоя, как это было в рассмотренном одномерном случае.

Мы, также можем выполнять max-pooling в двух измерениях. Здесь мы берем максимум фичей из небольшого патча.

Это сводится к тому, что при рассмотрении целого изображения не важно точное положение края, вплоть до пикселя. Достаточно знать, где он находится в пределах нескольких пикселей.

Также, иногда используются трехмерные сверточные сети для таких данных, таких как видео или объемные данные (например, 3D-сканирование в медицине). Однако, такие сети не очень широко используются, и гораздо сложнее в визуализации.

Ранее, мы говорили, что A — группа нейронов. Будем более точными в том: что такое А?

В традиционных сверточных слоях A представляет собой параллельную связку нейронов, все нейроны получают одинаковые входные сигналы и вычисляют разные функции.

Например, в двумерном сверточном слое один нейрон может обнаруживать горизонтальные края, другой, вертикальные края, а третий зелено-красные цветовые контрасты.

В статье ‘Network in Network’ (Lin et al. (2013)) предлагается новый слой «Mlpconv». В этой модели, A имеет несколько уровней нейронов, причем последний слой выводит функции более высокого уровня для обрабатываемого региона. В статье, модель достигает впечатляющих результатов, устанавливая новый уровень техники в ряде эталонных наборов данных. Для целей этой публикации мы сосредоточимся на стандартных сверточных слоях.

Результаты сверточных нейронных сетей

В 2012 году Alex Krizhevsky, Ilya Sutskever, и Geoff Hinton достигли существенного улучшения качества распознавания в сравнении с известными на тот момент решениями (Krizehvsky et al. (2012)).

Прогресс был результатом объединения нескольких подходов. Использовались графические процессоры для обучения большой (по меркам 2012 года), глубокой нейронной сети. Использовался новый тип нейронов (ReLU) и новая техника для уменьшения проблемы, называемой «overfitting» (DropOut). Использовали большой набор данных с большим количеством категорий изображений (ImageNet). И конечно же, это была сверточная нейронная сеть.

Архитектура, показанная ниже, была глубокой. Она имеет 5 сверточных слоев, 3 pooling с чередованием и три полносвязных слоя.
.

Сеть была обучена классификации фотографий в тысячи разных категорий.

Модель Крижевского и др. была способна дать правильный ответ в 63% случаев. Кроме того, правильный ответ из 5 лучших ответов, присутствует 85% прогнозов!

Проиллюстрируем, что узнает первый уровень сети.

Напомним, что сверточные слои были разделены между двумя графическими процессорами. Информация не идет назад и вперед по каждому слою. Оказывается, каждый раз, когда модель запускается, обе стороны специализируются.

Фильтры, полученные первым сверточным слоем. Верхняя половина соответствует слою на одном графическом процессоре, нижняя — на другом. From Krizehvsky et al. (2012)

Нейроны с одной сторону, фокусируются на черно-белом цвете, учась обнаруживать края разных ориентаций и размеров. Нейроны с другой стороны, специализируются на цвете и текстуре, обнаруживают цветовые контрасты и узоры. Помните, что нейроны случайным образом инициализируются. Ни один человек не пошел и не поставил их пограничными детекторами, или разделил таким образом. Это произошло при обучении сети классификации изображений.

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

Сверточные нейронные сети являются важным инструментом в компьютерном видении и современном распознавании образов.

Формализация сверточных нейронных сетей

Рассмотрим одномерный сверточный слой с входами и выводами :

Что такое pooling доставка? Плюсы и минусы.

Доставка товара в торговые сети – организационно сложный процесс. Необходимо учесть массу факторов:

  • обширный ассортимент в одной поставке;
  • ритмичность поставок;
  • риск пересортицы;
  • разнообразные требования к загрузке разнородного товара в одной машине и т.д.

Но при этом, ритейлеры – это надёжные и платежеспособные клиенты, предоставляющие долгосрочные заказы.

В последнее время получил распространение термин «pooling доставка» — доставка сборных грузов от разных поставщиков в распределительный центр торговой сети. Сложность организации такой перевозки заключается в несогласованности по времени со всеми заинтересованными сторонами – в итоге, фура может быть наполнена на 100% и тогда стоимость единицы товара будет минимальной, а может загрузиться только на четверть, что приведёт к значительному подорожанию перевозки.

Ритейлеры не готовы платить лишние средства из-за недогруженности автомобиля. Проблему решают профессионально работающие логистические компании, которые, владея значительным объёмом информации, о движении товара в регионе, всегда подберут взаимно выгодный вариант перевозки, манипулируя маршрутом и привлекая различные транспортные средства.

Несмотря на положительные тенденции, в данном виде перевозок сохраняются устойчивые плюсы и минусы.

  • низкая стоимость перевозки при полностью загруженном транспортном средстве.
  • значительный непредсказуемый рост стоимости при недогрузе;
  • оплата простоя автомобиля, в случае задержки отправления из-за неукомплектованности;
  • сложности погрузо-разгрузочных операций ввиду разнородности товара.

NOVELCO – один из ведущих российских операторов логистических услуг, имеющий значительный опыт в организации pooling доставки. Благодаря налаженной работе специалистов в режиме 24/7, индивидуальному подходу к каждому Клиенту, а также обширной агентской и партнёрской сети, организует доставку сборного разнородного груза на самых выгодных условиях.

Введение в свёрточные нейронные сети (Convolutional Neural Networks)

Полный курс на русском языке можно найти по этой ссылке.
Оригинальный курс на английском доступен по этой ссылке.

Выход новых лекций запланирован каждые 2-3 дня.

Интервью с Себастьяном

— Итак, мы снова с Себастьяном в третьей части этого курса. Себастьян, я знаю, что вы проводили много разработок с использованием свёрточных нейронных сетей. Можете нам рассказать чуточку больше об этих сетях и что они собой представляют? Я уверена, что студенты нашего курса будут слушать с не меньшим интересом, потому что в этой части им предстоит разрабатывать свёрточную нейронную сеть самим.
— Отлично! Итак, свёрточные нейронные сети это великолепный способ структурирования в сети, построения так называемой инвариантности (выделения неизменяемых признаков). Например, возьмём идею распознавания образов на сцене или фотографии, вы хотите понять изображён ли Себастьян на ней или нет. Не важно в какой части фотографии я располагаюсь, где располагается моя голова — по центру фотографии или в углу. Распознавание моей головы, моего лица должно происходить вне зависимости от того, где они расположены на изображении. Это и есть инвариантность, вариативность местоположения, которая реализуется свёрточными нейронными сетями.
— Очень интересно! Можете назвать нам основные задачи в которых применяются свёрточные нейронные сети?
— Свёрточные нейронные сети достаточно плотно используются при работе с аудио и видео, включая медицинские изображения. Так же они используются в языковых технологиях, где специалисты используют глубокое обучение для понимания и воспроизведения языковых конструкций. На самом деле применений у этой технологии очень много, я бы даже сказал, что они безграничны! Её, технологию, можно использовать в финансах и любых других областях.
— Я использовала свёрточные нейронные сети для анализа снимков со спутников.
— Здорово! Стандартная задача!
— Как вы думаете, можем ли мы считать свёрточные нейронные сети чем-то последним и самым продвинутым инструментом в развитии глубокого обучения?
— Ха! Я уже научился никогда не говорить «никогда». Всегда будет находиться нечто новое и потрясающее!
— Значит нам ещё предстоит поработать? 🙂
— Работы будет достаточно!
— Превосходно! В этом курсе мы как раз обучаем будущих пионеров машинного обучения. Есть ли у вас пожелания нашим студентам, перед тем как они начнут строить свою первую свёрточную нейронную сеть?
— Вот вам интересный факт. Свёрточные нейронные сети были изобретены в 1989 году, а это очень давно! Большинство из вас даже не родились ещё в то время, а это означает, что не гениальность алгоритма имеет огромное значение, а данные, которыми оперирует этот алгоритм. Мы живём в мире, где предостаточно данных для анализа и поиска закономерностей. У нас есть возможность эмулировать функции человеческого разума используя это огромное количество данных. Когда вы будете работать над свёрточными нейронными сетями, попробуйте сфокусироваться на поиске правильных данных и их применении — посмотрите, что из этого получится и, порой, это может оказаться настоящей магией, как было в нашем случае, когда мы решали задачу определения рака кожи.
— Великолепно! Ну, что, давайте наконец-то займёмся магией!

Введение

На прошлом занятии мы научились разрабатывать глубокие нейронные сети, которые способны классифицировать изображения элементов одежды из набора данных Fashion MNIST.

Результаты, которых мы добились в процессе работы над нейронной сетью, были впечатляющими — 88% точность классификации. И это в несколько строк кода (не учитывая код построения графиков и изображений)!

model = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28, 1)), tf.keras.layers.Dense(128, activation=tf.nn.relu), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ]) 
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) 
NUM_EXAMPLES = 60000 train_dataset = train_dataset.repeat().shuffle(NUM_EXAMPLES).batch(32) test_dataset = test_dataset.batch(32) 
model.fit(train_dataset, epochs=5, steps_per_epoch=math.ceil(num_train_examples/32)) 
test_loss, test_accuracy = model.evaluate(test_dataset, steps=math.ceil(num_test_examples/32)) print('Точность: ', test_accuracy) 

Точность: 0.8782

Мы так же экспериментировали с влиянием количества нейронов в скрытых слоях и количества обучающих итераций на точность модели. Но как нам сделать эту модель ещё лучше и точнее? Один из способов этого добиться — использовать свёрточные нейронные сети, сокращённо СНС. СНС показывают большую точность при решении задач классификации изображений, нежели стандартные полносвязные нейронные сети с которыми мы сталкивались на предыдущих занятиях. Именно по этой причине СНС стали такими популярными и именно благодаря им стал возможен технологический прорыв в области машинного зрения.

На этом занятии мы узнаем, насколько легко разработать СНС-классификатор с нуля используя TensorFlow и Keras. Мы будем использовать тот же набор данных Fashion MNIST, который использовали на предыдущем занятии. В конце этого занятия мы сравним точность классификации элементов одежды предыдущей нейронной сети со свёрточной нейронной сетью из этого занятия.

Перед тем как погружаться в разработку стоит немного углубиться в принцип работы свёрточных нейронных сетей.

Две основные концепции в свёрточных нейронных сетях:

  • свёртка
  • операция подвыборки (pooling, max pooling)

Давайте рассмотрим их подробнее.

Свёртка

В этой части нашего занятия мы изучим технику, которая называется свёрткой. Давайте посмотрим, как же она работает.

Возьмём изображение в оттенках серого и, для примера, представим, что его размеры 6 px в высоту и 6 px в ширину.

Наш компьютер интерпретирует изображение как двумерный массив пикселей. Так как наше изображение в оттенках серого, то значение каждого пикселя будет находиться в интервале от 0 до 255. 0 — черный, 255 — белый.

На изображении ниже мы видим представление изображения 6px x 6px и соответствующие значения пикселей:

Как вы уже знаете, перед работой с изображениями значения пикселей необходимо нормализовать — привести значения к интервалу от 0 до 1. Однако в данном примере, для удобства пояснений, сохраним значения пикселей изображения и не будет их нормализовать.

Суть свёртки заключается в создании другого набора значений, который называется ядром или фильтром. Пример можно увидеть на изображении ниже — матрица размером 3 х 3:

Затем мы можем просканировать наше изображение с использованием ядра. Размеры нашего изображения 6х6px, а ядра — 3x3px. Свёрточный слой применяется к ядру и каждому участку входного изображения.

Давайте представим себе, что мы хотим выполнить свёртку над пикселем со значением 25 (3 строка, 3 столбец) и первым делом, что необходимо сделать — центрировать ядро над этим пикселем:

На изображении размещение ядра выделено жёлтым цветом. Теперь мы будем смотреть только на те значения пикселей, которые находятся в нашем жёлтом прямоугольнике, размеры которого соответствуют размерам нашего ядра свёртки.

Теперь берём значения пикселей изображения и ядра, умножаем каждый пиксель изображения с соответствующим пикселем ядра и складываем все значения произведений, а результатирующее значение пикселя присваиваем новому изображению.

Подобную операцию мы производим со всеми пикселями нашего изображения. Но что должно происходить с пикселями на границах?

Есть несколько решений. Во-первых, мы можем просто проигнорировать эти пиксели, но в таком случае мы потеряем информацию об изображении, которая может оказаться значимой, а свёрнутое изображение станет по размерам меньше оригинального. Во-вторых, мы можем просто «забить» нулевыми значениями те пиксели, значения ядра для которых выходят за рамки изображения. Процесс называется выравниванием.

Теперь, когда произведено выравнивание нулевыми значениями пикселей, мы можем вычислить значение итогового пикселя в свёрнутом изображении как и прежде.

Свёртка — это процесс применения ядра (фильтра) к каждому участку входного изображения, по аналогии с полносвязным слоем (dense-слоем) мы увидим, что и свёртка представляет собой такой же слой в Keras.

Теперь давайте рассмотрим вторую концепцию свёрточных нейронных сетей — операцию подвыборки (pooling, max-pooling).

Операция подвыборки (pooling, max-pooling)

Сейчас мы рассмотрим вторую фундаментальную концепцию лежащую в основе свёрточных нейронных сетей — операцию подвыборки (pooling, max-pooling). Простыми словами, операция подвыборки это процесс сжатия (уменьшения размеров) изображения путём сложения значений блоков пикселей. Давайте рассмотрим как это работает на конкретном примере.

Чтобы выполнить операцию подвыборку нам необходимо определиться с двумя составляющими этого процесса — размером выборки (размером прямоугольной сетки) и величиной шага. В этом примере мы будем использовать прямоугольную сетку размером 3х3 и шагом 3. Шаг определяет количество пикселей на которые необходимо сдвигать прямоугольную сетку при выполнении операции подвыборки.

После того как мы определились с размером сетки и размером шага нам необходимо найти максимальное значение пикселя попадающее в выделенную сетку. В пример выше в сетку попадают значения 1, 0, 4, 8, 2, 5, 20, 13, 25. Максимальное значение — 25. Это значение «переносится» в новое изображение. Сетка сдвигается на 3 пикселя вправо и процесс выборки максимального значения и его переноса на новое изображение повторяется.

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

Давайте посмотрим как это будет работать в Python!

Резюме

Мы познакомились с такими понятиями как свёртка и операция подвыборки (max-pooling).

Свёртка — процесс применения фильтра («ядра») к изображению. Операция подвыборки по максимальному значению — процесс уменьшения размеров изображения через объединение группы пикселей в единое максимальное значение из этой группы.

Как мы увидим в практической части, свёрточный слой может быть добавлен к нейронной сети с использованием Conv2D -слоя в Keras. Этот слой подобен Dense-слою, и содержит веса и смещения, которые подвергаются оптимизации (подбору). Conv2D -слой так же содержит фильтры («ядра»), значения которых тоже оптимизируются. Итак, в Conv2D -слое значения внутри матрицы фильтра и есть переменные, которые подвергаются оптимизации.

Некоторые термины с которыми мы успели столкнуться:

  • СНС — свёрточные нейронные сети. Нейронная сеть, которая содержит хотя бы один свёрточный слой. Типичная СНС содержит и другие слои, такие как слои выборки и полносвязные слои.
  • Свёртка — процесс применения фильтра («ядра») к изображению.
  • Фильтр (ядро) — матрица, по размерам меньше, чем входные данные, предназначенная для преобразования входных данных блоками.
  • Выравнивание — процесс добавления, чаще всего нулевых значений, по краям изображения.
  • Операция подвыборки — процесс уменьшения размера изображения через сэмплирование. Существует несколько типов слоёв подвыборки, например, слой усредненной подвыборки (выборка среднего значения), однако подвыборка по максимальному значению используется чаще всего.
  • Подвыборка по максимальному значению — процесс подвыборки, в ходе которого множество значений преобразовываются в единое значение — максимальное среди выборки.
  • Шаг — количество пикселей смещения фильтром (ядром) на изображении.
  • Сэмплирование (downsampling) — процесс уменьшения размера изображения.

CoLab: классификация элементов одежды Fashion MNIST с использованием свёрточной нейронной сети

Нас обвели вокруг пальца! Данную практическую часть есть смысл выполнять только после выполнения предыдущей части — весь код, кроме одного блока, остаётся прежним. Меняется структура нашей нейронной сети, а это — четыре дополнительные строки для свёрточных нейронных слоёв и слоёв подвыборки по максимальному значению (max-pooling).

model = tf.keras.Sequential([ tf.keras.layers.Conv2D(32, (3,3), padding='same', activation=tf.nn.relu, input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2D((2, 2), strides=2), tf.keras.layers.Conv2D(64, (3,3), padding='same', activation=tf.nn.relu), tf.keras.layers.MaxPooling2D((2, 2), strides=2), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation=tf.nn.relu), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ]) 

Все детальные пояснения, как это работать, нам обещают дать в следующей части — 4 части.

Ах, да. Точность модели на этапе обучения стала равна 97% (модель «переобучилась» при epochs=10 ), а при прогонке по набору данных для тестов показала точно 91%. Заметный прирост точности относительно предыдущей архитектуры, где у нас были использованы только полносвязаные слои — 88%.

Итоги

В этой части занятия мы изучили новый тип нейронных сетей — свёрточные нейронные сети. Познакомились с такими терминами как «свёртка» и «операция подвыборки по максимальному значению» (max-pooling), разработали и обучили свёрточную нейронную сеть с нуля. В результе мы увидели, что наша свёрточная нейронная сеть выдаёт точность больше, чем нейронная сеть, которую мы разрабатывали на прошлом занятии.

P.S. Примечание от автора перевод.

Курс называется «Введение в глубокое обучение с использованием TensorFlow», поэтому сетовать на то, что нет детализированных пояснений по принципу работы свёрточных нейронных сетей (слоёв) мы не будем — следующие две статьи будут как раз о принципе работы свёрточной нейронной сети и их внутренней структуре (статьи не касаются курса, а были рекомендованы участниками StackOverflow для лучшего понимания происходящего).

… и стандартные call-to-action — подписывайся, ставь плюс и делай share 🙂
YouTube
Telegram
ВКонтакте

  • Big Data
  • Машинное обучение
  • Искусственный интеллект

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *