Глава 4. Распознавание изображений
и звуковых сигналов
183
повторяющихся «мотивов» слоев conv2d в сочетании со слоями maxPooling2d.
Часть модели, связанная со сверткойсубдискретизацией, заканчивается на слое
схлопывания, за которым располагается многослойный перцептрон. MLP вклю
чает два плотных слоя. Функция активации скрытого плотного слоя — ReLU,
а последнего (выходного) слоя — многомерная логистическая функция актива
ции, подходящая для задачи классификации. При компиляции модели в качестве
функции потерь указана
categoricalCrossentropy
, а во время обучения и оценки
генерируется метрика безошибочности. Все точно так же, как и в сверточных
сетях для MNIST, поскольку оба набора данных требуют многоклассовой клас
сификации. Сверточная сеть для обработки аудиоданных также отличается от
сети MNIST интересными особенностями. В частности, форма свойств
kernelSize
слоев conv2d — прямоугольная (например,
[2,
8]
), а не квадратная, чтобы со
ответствовать неквадратной форме спектрограмм, измерение частоты которых
больше,
чем временн
ó
е.
Для обучения модели необходимо сначала скачать набор данных речевых команд.
Он был создан на основе набора данных речевых команд, собранного Питом Уорде
ном, инженером из команды Google Brain (см.
https://www.tensorflow.org/tutorials/audio/
simple_audio
), и преобразован в подходящий для браузера формат спектрограмм:
curl -fSsL https://storage.googleapis.com/learnjs-data/speech-commands/
speech-commands-data- v0.02-browser.tar.gz
-o speech-commands-data-v0.02-browser.tar.gz &&
tar xzvf speech-commands-data-v0.02-browser.tar.gz
Эти команды скачивают и извлекают браузерную версию набора данных речевых
команд. После извлечения данных можно запустить процесс обучения с помощью
следующей команды:
yarn
yarn train \
speech-commands-data-browser/ \
/tmp/speech-commands-model/
Первый аргумент команды
yarn
train
указывает на место размещения обуча
ющих данных. Следующие аргументы задают путь сохранения JSONфайла модели,
а также файла весов и JSONфайла метаданных. Как и в случае усовершенство
ванной сверточной сети MNIST, мы обучаем сверточную сеть для аудиоданных
в tfjsnode, что позволяет использовать GPU. А поскольку размеры набора данных
и модели намного больше, чем у сверточной сети MNIST, обучение займет больше
времени (порядка нескольких часов). Процесс можно значительно ускорить при
наличии поддерживающего CUDA GPU, слегка изменив команду так, чтобы ис
пользовать tfjsnodegpu вместо tfjsnode по умолчанию (выполняемого только на
CPU). Для этого просто добавьте в
предыдущую команду флаг
--gpu
:
yarn train \
--gpu \
speech-commands-data-browser/ \
/tmp/speech-commands-model/