Глава 4. Распознавание изображений и звуковых сигналов
177
Метод
save()
объекта
model
служит для сохранения модели в каталог файловой
системы. Он принимает один аргумент — строку URL, начинающуюся с file://. Обра
тите внимание, что сохранение модели в файловой системе возможно благодаря
использованию tfjsnode. В браузерной версии TensorFlow.js также существует API
model.save()
, но обращаться напрямую к нативной файловой системе машины он
не может изза ограничений безопасности браузера. Поэтому при использовании
TensorFlow.js в браузере приходится вместо файловой системы выбирать другие
места сохранения (локальное хранилище браузера и IndexedDB). Для них преду
смотрены другие схемы формирования URL.
Функция
model.save()
— асинхронная, поскольку в общем случае подразумева
ет работу с файловым или сетевым вводом/выводом. По этой причине для вызова
save()
мы используем ключевое слово
await
. Допустим, переменной
modelSavePath
присвоено значение
/tmp/tfjs-node-mnist
. Тогда, если после завершения работы
model.save()
вывести содержимое каталога:
ls -lh /tmp/tfjs-node-mnist
список файлов окажется примерно следующим:
-rw-r--r-- 1 user group 4.6K Aug 14 10:38 model.json
-rw-r--r-- 1 user group 2.3M Aug 14 10:38 weights.bin
Здесь мы видим два файла.
z
z
model.json
— файл в формате JSON, содержащий сохраненную топологию мо
дели. Под топологией мы понимаем типы слоев, составляющих модель, соответ
ствующие параметры конфигурации (например,
filters
для слоя conv2d и
rate
для слоя дропаута), а также описание способов соединения слоев друг с другом.
В случае сверточной сети MNIST эти соединения просты, поскольку модель по
следовательная. Далее нам предстоит встретить модели с менее тривиальными
паттернами соединений, которые также можно сохранить на диск с помощью
вызова
model.save()
.
z
z
Помимо топологии модели,
model.json
содержит описание весов модели. В этой
его части перечислены названия, формы и типы данных всех весовых коэффи
циентов модели, помимо мест, где значения этих весов хранятся. Это приводит
нас ко второму файлу:
weights.bin
.
z
z
Как ясно из его названия,
weights.bin
— это двоичный файл, в котором хранятся
все значения весов модели. Он представляет собой «плоский» двоичный поток
данных, без разделителей, указывающих, где начинаются и заканчиваются от
дельные веса. Эта «метаинформация» доступна в той части объекта JSON из
файла
model.json
, что относится к описанию весов.
Для загрузки модели с помощью tfjsnode можно воспользоваться методом
tf.loadLayersModel()
, указав ему местоположение файла
model.json
(не приводится
в коде примера):
const loadedModel = await tf.loadLayersModel('file:///tmp/tfjs-node-mnist');
178
Do'stlaringiz bilan baham: |