Глава 4. Распознавание изображений и звуковых сигналов
185
Упражнения
1. Сверточная сеть для классификации изображений MNIST в браузере (см. ли
стинг 4.1) включает две группы слоев conv2d и maxPooling2d. Модифицируйте
код так, чтобы осталась только одна группа. Ответьте на следующие вопросы.
А. Как это изменение повлияло на общее число обучаемых параметров сети?
Б. Как изменение повлияло на скорость обучения?
В. Как изменение повлияло на итоговую безошибочность сети после обучения?
2. Это упражнение аналогично упражнению 1. Но вместо изменения количества
групп слоев conv2dmaxPooling2d поэкспериментируйте с количеством плотных
слоев MLPчасти сверточной сети в листинге 4.1. Как изменятся общее число
параметров, скорость обучения и итоговая безошибочность, если удалить первый
плотный слой, оставив только второй (выходной)?
3. Удалите слой дропаута из сверточной сети mnistnode (см. листинг 4.5) и посмо
трите, как это повлияет на процесс обучения и итоговый показатель безошибоч
ности на контрольном наборе данных. Почему так происходит и что это означает?
4. Для наработки практических навыков извлечения данных изображений из графи
ческих и видеоэлементов вебстраницы с помощью метода
tf.browser.fromPi-
xels()
попробуйте сделать следующее.
А. С помощью метода
tf.browser.fromPixels()
получите тензорное представле
ние цветного изображения JPG из элемента
img
.
• Каковы высота и ширина тензора изображения, возвращенного методом
tf.browser.fromPixels()
? Что определяет эти высоту и ширину?
186
Часть II • Введение в TensorFlow.js
• Измените размер изображения до 100
×
100 (высота
×
ширина) с помощью
метода
tf.image.resizeBilinear()
.
• Повторите предыдущий шаг, но теперь воспользуйтесь другой функци
ей для измерения размера:
tf.image.resizeNearestNeighbor()
. Видите
какиенибудь различия между результатами работы этих двух функций
изменения размера?
Б. Создайте холст HTML и нарисуйте на нем произвольные фигуры с помощью
функций наподобие
rect()
. Либо, если хотите, воспользуйтесь более про
двинутыми библиотеками, например d3.js или three.js, для рисования на нем
более сложных двумерных и трехмерных фигур. Далее извлеките с этого холста
данные изображения в виде тензора с помощью метода
tf.browser.fromPixels()
.
Резюме
z
z
Сверточные сети выделяют из входных изображений двумерные пространственные
признаки с помощью иерархии последовательных слоев conv2d и maxPooling2d.
z
z
Слои conv2d — это многоканальные настраиваемые пространственные фильтры.
Благодаря своим свойствам локальности и единства параметров они обладают
широкими возможностями выделения признаков и эффективного преобразова
ния представлений.
z
z
Слои maxPooling2d уменьшают размер тензора входного изображения за счет
вычисления максимума по окну фиксированного размера, тем самым снижая
степень зависимости от конкретной позиции.
z
z
«Стопка» слоев conv2dmaxPooling2d сверточной сети обычно завершается слоем
схлопывания, за которым следует состоящий из плотных слоев MLP, предназна
ченный для классификации или регрессии.
z
z
Изза ограниченности ресурсов браузер подходит для обучения только малень
ких моделей. Для обучения б
ó
льших моделей мы рекомендуем использовать
tfjsnode — версию TensorFlow.js для Node.js; tfjsnode умеет использовать те же
распараллеленные ядра CPU и GPU, что и Pythonверсия TensorFlow.
z
z
Чем больше разрешающие возможности модели, тем выше риск переобучения.
Снизить риск переобучения можно, добавив в сверточную сеть слои дропаута.
Слои дропаута во время обучения обнуляют заданную часть входных элементов,
выбираемых случайным образом.
z
z
Сверточные сети пригодны не только для решения задач машинного зрения.
С их помощью можно достичь высокой степени безошибочности классификации
аудиосигналов, представленных в виде спектрограмм.
Do'stlaringiz bilan baham: |