Часть II • Введение в TensorFlow.js
epochs
, означающее, что мы хотели бы пройти по обучающим данным ровно десять
раз. В глубоком обучении отдельный проход по полному обучающему набору данных
называется
эпохой
(epoch).
Листинг 2.5.
Подгонка модели линейной регрессии (из Codepen 2-c)
(async function() {
await model.fit(trainTensors.sizeMB,
trainTensors.timeSec,
{epochs: 10});
})();
Метод
fit()
может выполняться довольно долго, секунды или даже минуты.
Поэтому мы воспользовались возможностью
async/await
стандарта ES2017/ES8,
чтобы эта функция не блокировала основной поток выполнения UI при работе
в браузере. Это аналогично другим «долгоиграющим» функциям JavaScript, на
пример
async
fetch
. Здесь мы ожидаем завершения вызова
fit()
, прежде чем про
должать выполнение, с помощью паттерна
«Немедленно выполняемое асинхронное
функциональное выражение»
(Immediately Invoked Async Function Expression)
1
.
Но в будущих примерах обучение будет происходить в фоновом режиме, в то время
как остальная работа будет выполняться в приоритетном потоке.
По завершении подгонки модели хочется проверить, как она работает. Главное,
проверять модель необходимо на данных, которые не использовались во время об
учения. Вопрос отделения контрольных данных от обучающих (которое позволяет
избежать обучения на контрольных данных) будет проходить красной нитью по всей
книге. Желательно как следует усвоить эту важнейшую составляющую технологи
ческого процесса машинного обучения.
Метод
evaluate()
модели вычисляет функцию потерь для переданных ему при
знаков и целевых значений примера данных. Он напоминает метод
fit()
тем, что
вычисляет ту же функцию потерь, но отличается тем, что не обновляет веса модели.
Мы используем
evaluate()
для оценки работы модели на контрольных данных,
то есть чтобы понять, насколько хорошо она будет работать в дальнейшем:
> model.evaluate(testTensors.sizeMB, testTensors.timeSec).print();
Tensor
0.31778740882873535
Здесь видно, что потери, усредненные по контрольным данным, составляют
около 0,318. Конечно, поскольку модели обучаются со случайного начального со
стояния, вы получите другое значение. Еще один способ выразить ту же мысль:
средняя абсолютная погрешность (mean absolute error, MAE) этой модели состав
ляет более 0,3 секунды. Хорошо ли это? Лучше ли, чем константная оценка? Одна
неплохая возможная константа для этого — средняя задержка. Подсчитаем, какую
погрешность это нам даст, воспользовавшись поддержкой математических операций
над тензорами библиотеки TensorFlow.js. Вопервых, мы вычислим среднее время
скачивания для нашего обучающего набора данных:
1
Больше информации о паттерне вы найдете по адресу http://mng.bz/RPOZ.
Do'stlaringiz bilan baham: |