Глава 9. Глубокое обучение для последовательностей и текста
347
Листинг 9.2.
Создание модели на основе simpleRNN для задачи предсказания температуры
Обучается эта модель RNN в серверной среде с помощью tfjsnode. Изза боль
шого объема вычислений, необходимых для основанного на BPTT обучения RNN,
обучение этой модели в браузерной среде с ее ограничениями на ресурсы заняло бы
больше времени и потребовало бы значительных усилий, а то и вообще оказалось
невозможным. При наличии настроенной должным образом среды CUDA можно
добавить в команду флаг
--gpu
и значительно ускорить обучение.
Благодаря заданию флага
--logDir
в предыдущей команде процесс обучения мо
дели журналирует значения потерь в указанный каталог. При желании можно затем
загрузить данные и построить график кривых потерь в браузере с помощью утилиты
TensorBoard. Рисунок 9.3 представляет собой снимок экрана TensorBoard. На уровне
JavaScriptкода это реализуется с помощью указания в вызове
tf.LayersModel.fit()
особой функции обратного вызова, указывающей на каталог с журналами. Более
подробное описание можно найти в инфобоксе 9.1.
Рис. 9.3.
Кривые потерь MAE из созданной для задачи предсказания температуры Jena модели
simpleRNN. Эта диаграмма представляет собой снимок экрана TensorBoard, обрабатывающего
журналы обучения модели simpleRNN с помощью Node.js
348
Часть III • Продвинутые возможности глубокого обучения с TensorFlow.js
ИНФОБОКС 9.1. Использование обратных вызовов TensorBoard
для мониторинга длительного обучения модели в Node.js
В главе 8 мы познакомили вас с функциями обратного вызова из библиотеки tfjs
vis, предназначенными для мониторинга вызовов
tf.LayersModel.fit()
в браузере.
Впрочем, tfjsvis — чисто браузерная библиотека и для работы с Node.js не подходит.
По умолчанию
tf.LayersModel.fit()
в tfjsnode (или tfjsnodegpu) отрисовывает ин
дикаторы хода выполнения и отображает потери и показатели времени в терминале.
Несмотря на простоту и информативность, текст и числа часто интуитивно не так
понятны и привлекательны в качестве средства мониторинга длительного обучения
моделей, как GUI. Например, небольшие изменения значения потерь за продолжи
тельное время, часто как раз и интересующие нас на последних этапах обучения мо
дели, намного проще заметить на графике (при заданных должным образом масштабе
и сетке), чем в массиве текста.
К счастью, в серверной среде нам на помощь приходит утилита
TensorBoard
. Она из
начально предназначалась для TensorFlow (Python), но tfjsnode и tfjsnodegpu умеют
записывать данные в подходящем для ввода в TensorBoard формате. Для журналиро
вания потерь и значений показателей в TensorBoard из вызовов
tf.LayersModel.fit()
и
tf.LayersModel.fitDataset()
воспользуйтесь следующим шаблоном:
import * as tf from '@tensorflow/tfjs-node';
// Или '@tensorflow/tfjs-node-gpu'
// …
await model.fit(xs, ys, {
epochs,
callbacks: tf.node.tensorBoard('/path/to/my/logdir')
});
// Или для fitDataset():
await model.fitDataset(dataset, {
epochs,
batchesPerEpoch,
callbacks: tf.node.tensorBoard('/path/to/my/logdir')
});
В результате этих вызовов значения потерь и все заданные во время вызова
compile()
показатели будут записаны в каталог
/path/to/my/logdir
. Для просмотра этих журна
лов в браузере сделайте следующее.
1. Откройте отдельное окно терминала.
2. Установите TensorBoard с помощью следующей команды (если он еще не уста
новлен):
pip install tensorboard
3. Запустите сервер прикладной части TensorBoard, указав при этом каталог журна
лов, заданный при создании обратного вызова:
tensorboard –logdir /path/to/my/logdir
4. Перейдите в браузере на отображаемый процессом TensorBoard URL вида
http://
.
После этого в прекрасном вебинтерфейсе TensorBoard появятся диаграммы потерь
и показателей наподобие приведенных на рис. 9.3 и 9.5.
Do'stlaringiz bilan baham: |