Bog'liq Цэй Ш., Байлесчи С., и др. - JаvaScript для глубокого обучения (Библиотека программиста) - 2021
Часть II • Введение в TensorFlow.js
Метод
tf.loadLayersModel()
восстанавливает модель, десериализуя сохранен
ную топологию модели из файла
model.json
. Далее
tf.loadLayersModel()
счи
тывает двоичные значения весов из файла
weights.bin
с помощью их описания
из файла
model.json
и устанавливает соответствующие значения весов модели.
Как и
model.save()
, метод
tf.loadLayersModel()
— асинхронный, так что при его
вызове используется ключевое слово
await
. После возврата из его вызова объект
loadedModel
оказывается во всех смыслах эквивалентен модели, созданной и обучен
ной с помощью JavaScriptкода из листингов 4.5 и 4.6. При желании можно вывести
сводку топологии этой модели, вызвав метод
summary()
объекта
loadedModel
. Далее
выполнить на основе этой топологии вывод с помощью метода
predict()
, оценить
безошибочность модели с помощью метода
evaluate()
или даже обучить ее заново
с использованием метода
fit()
. При желании можно также снова сохранить модель.
Технологический процесс повторного обучения и сохранения модели окажется
весьма актуальным при обсуждении переноса обучения в главе 5.
Сказанное в предыдущих абзацах применимо и к браузерной среде. Сохраненные
файлы можно использовать для восстановления модели на вебстранице. Восстанов
ленная модель поддерживает полный технологический процесс
tf.LayersModel()
с тем нюансом, что ее полное переобучение будет очень медленным и неэффектив
ным изза большого размера усовершенствованной сверточной сети. Единствен
ное принципиальное различие между загрузками сохраненной модели в tfjsnode
и браузере заключается в необходимости использовать отличную от file:// схему
формирования URL в браузере. Обычно файлы
model.json
и
weights.bin
разме
щаются на HTTPсервере в виде файлов статических ресурсов. Пусть имя вашего
хоста — localhost, а файлы располагаются на сервере по пути
my/models/
. Тогда за
грузить модель в браузере можно, написав такую строку кода:
const loadedModel = await tf.loadLayersModel('http:///localhost/my/models/
model.json');
При загрузке HTTPварианта модели в браузере метод
tf.loadLayersModel()
неявно вызывает встроенную функцию
fetch
браузера. Поэтому он обладает сле
дующими свойствами и возможностями.
z
z
Поддерживается как http://, так и https://протокол.
z
z
Поддерживаются относительные пути на сервере. На самом деле при исполь
зовании относительных путей можно опускать в URL части http:// и https://.
Например, если вебстраница располагается на сервере по пути
my/index.html
,
а JSONфайл модели — по пути
my/models/model.json
, можно указать относи
тельный путь
model/model.json
:
const loadedModel = await tf.loadLayersModel('models/model.json');
z
z
Для указания дополнительных опций HTTP/HTTPSзапросов необходимо
вместо строкового аргумента использовать метод
tf.io.browserHTTPRequest()
.
Например, чтобы загрузить вместе с моделью учетные данные и заголовки, можно
написать следующее:
const loadedModel = await tf.loadLayersModel(tf.io.browserHTTPRequest(
'http://foo.bar/path/to/model.json',
{credentials: 'include', headers: {'key_1': 'value_1'}}));