Часть II • Введение в TensorFlow.js
загружающей эту преобразованную модель с диска, сохраненный формат иденти
чен модели, созданной и обученной в TensorFlow.js: можно просто вызвать метод
tf.loadLayersModel()
, передав ему путь к файлу
model.json
(либо в браузере, либо
в Node.js). Именно это и происходит в листинге 5.3.
Загруженная модель MobileNet готова к выполнению задачи ML, для которой она
изначально была обучена, — классификации входных изображений по 1000 классов
набора данных ImageNet. Учтите, что этот конкретный набор данных в значительной
степени ориентирован на изображения животных, особенно различные породы кошек
и собак (вероятно, это связано с большой распространенностью подобных изображений
в Интернете). Этот сценарий использования иллюстрирует пример MobileNet из репо
зитория tfjsexample (
https://github.com/tensorflow/tfjs-examples/tree/master/mobilenet
).
Впрочем, в этой главе нас не интересует подобное непосредственное применение
MobileNet; мы хотим воспользоваться загруженной моделью для переноса обучения.
Приведенный выше метод
tfjs.converters.save_keras_model()
умеет преобразовывать
и сохранять не только модель MobileNet, но и другие приложения Keras, например
DenseNet и NasNet. В упражнении 3 в конце главы вам предстоит попытаться преобра
зовать в формат TensorFlow.js другое приложение Keras (MobileNetV2) и загрузить его
в браузере. Более того, стоит отметить, что метод
tfjs.converters.save_keras_model()
можно использовать вообще для любых объектов моделей, созданных или обученных
в Keras, а не только моделей из модуля
keras.applications
.
Что же мы будем делать со слоем
conv_pw_13_relu
после получения на него
ссылки? Создадим новую модель, включающую слои исходной модели MobileNet,
начиная с ее первого (входного) слоя и до слоя
conv_pw_13_relu
. В книге вы первый
раз сталкиваетесь с подобным стилем конструирования модели, так что не помешает
пояснить его идею подробнее. Для этого нам понадобится ввести понятие
символи-
ческого тензора
(symbolic tensor).
Создание моделей из символических тензоров
Вы уже знакомы с понятием тензора.
Tensor
— базовый тип данных (сокращенно
dtype
) в TensorFlow.js. Объект тензора содержит конкретные числовые значения
заданной формы и типа, хранимые в текстурах WebGL (если речь идет о браузере
с поддержкой WebGL) или памяти CPU/GPU (в Node.js).
SymbolicTensor
— отдель
ный важный класс библиотеки TensorFlow.js. Символический тензор не содержит
конкретных значений, только описывает их форму и dtype. Его можно рассматривать
как слот (заполнитель), в который позднее можно вставить фактический тензор при
условии совместимости формы и типа значения тензора. В TensorFlow.js объект
слоя или модели принимает один или несколько входных сигналов (до сих пор мы
сталкивались только со случаями одного входного сигнала), представленных в виде
одного или нескольких символических тензоров.
Воспользуемся аналогией, чтобы лучше понять, что такое символические тен
зоры. Представьте себе функцию языка программирования, например Java или
TypeScript (или любого другого знакомого вам статически типизированного языка
Do'stlaringiz bilan baham: |