Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
Таким образом, одномерные сверточные сети — заманчивая альтернатива RNN
для подобных задач обработки текста, особенно если учесть намного меньшие вы
числительные затраты одномерных сверточных сетей по сравнению с RNN. При
выполнении командам
cnn
и
lstm
видно, что обучение одномерной сверточной
сети происходит почти в шесть раз быстрее обучения LSTMмодели. LSTM и RNN
работают медленнее изза пошагового выполнения внутренних операций, не допу
скающих распараллеливания. сверточные же сети изначально приспособлены для
распараллеливания.
Применения одномерной сверточной сети
для выполнения вывода на веб-странице
В файле
sentiment/index.js
вы найдете код, который развертывает обученную
в Node.js модель для использования на стороне клиента. Чтобы увидеть клиентское
приложение в действии, выполните команду
yarn
watch
так же, как в прочих при
мерах в этой книге. Эта команда скомпилирует код, запустит вебсервер и автома
тически откроет в браузере вкладку со страницей
index.html
. На этой странице
вы сможете нажать кнопку для загрузки обученной модели посредством HTTP
запросов и выполнения с ее помощью анализа тональностей обзоров фильмов в окне
ввода текста. В этом окне пример обзора фильма можно редактировать, так что вы
можете вносить в него любые изменения и наблюдать за их влиянием на бинарные
предсказания в режиме реального времени. Страница включает два готовых приме
ра обзоров (позитивный и негативный), которыми вы можете воспользоваться как
отправной точкой для своих экспериментов. Загруженная одномерная сверточная
сеть работает достаточно быстро для генерации оценок тональностей на лету по мере
ввода текста в окне.
Основная часть кода выполнения вывода очевидна (см. листинг 9.9, взятый из
файла
sentiment/index.js
), но стоит отметить несколько интересных нюансов.
z
z
До преобразования в индексы слов весь входной текст переводится в нижний
регистр, все знаки препинания отбрасываются, а также удаляются лишние про
белы. Это необходимо, поскольку используемый нами словарь содержит слова
в нижнем регистре.
z
z
Особый индекс слова (
OOV_INDEX
) ставится в соответствие словам, не входя
щим в словарь (OOVсловам). В их число входят редкие слова и слова с опе
чатками.
z
z
Чтобы обеспечить нужную длину входных тензоров модели, используется та же
функция
padSequences()
, что и для обучения (см. листинг 9.7). Как мы уже ви
дели, реализуется это посредством усечения и дополнения. Вот наглядный при
мер преимуществ TensorFlow.js для подобных задач машинного обучения: один
и тот же код предварительной обработки можно применять и для среды обучения
в прикладной части, и для среды выдачи в клиентской части, снижая тем самым
риск возникновения асимметрии данных (листинг 9.9) (более подробно риски
асимметрии обсуждаются в главе 6).
Do'stlaringiz bilan baham: |