Bog'liq Цэй Ш., Байлесчи С., и др. - JаvaScript для глубокого обучения (Библиотека программиста) - 2021
Глава 5. Перенос обучения: переиспользование предобученных нейронных сетей
201 ИНФОБОКС 5.1. Преобразование моделей из формата библиотеки Keras языка Python в формат TensorFlow.js TensorFlow.js отличается высокой совместимостью с библиотекой Keras, одной из
наиболее популярных библиотек глубокого обучения Python. Одно из преимуществ
этой совместимости — возможность использовать многие так называемые приложения
из Keras, представляющие собой наборы предобученных глубоких сверточных сетей
(см.
https://keras.io/applications/
). Создатели Keras старательно обучили эти сверточные
сети на больших наборах данных (наподобие ImageNet) и открыли доступ к ним через
библиотеку Keras для свободного переиспользования. В том числе для вывода и пере
носа обучения, подобно тому как мы делаем в книге. Импорт приложения занимает
всего одну строку кода при использовании Keras в Python. Благодаря вышеупомянутой
широкой совместимости пользователи TensorFlow.js также с легкостью могут работать
с этими приложениями. Вот что для этого требуется.
1. Убедитесь, что у вас установлен пакет Python
tensorflowjs
. Проще всего установить
его с помощью команды
pip
:
pip install tensorflowjs
2. Выполните следующий код из файла исходного кода Python или в интерактивной
среде REPL наподобие ipython:
import keras
import tensorflowjs as tfjs
model = keras.applications.mobilenet.MobileNet(alpha=0.25)
tfjs.converters.save_keras_model(model, '/tmp/mobilnet_0.25')
Первые две строки импортируют требуемые модули
keras
и
tensorflowjs
. Третья стро
ка загружает MobileNet в объект языка Python (
model
). При желании можно вывести
текстовую сводку модели практически так же, как мы выводили сводки топологии
моделей TensorFlow.js: с помощью
model.summary()
. Как видите, форма последнего
слоя модели (выходного слоя) действительно
(None,
1000)
(эквивалентно
[null,
1000]
в JavaScript), отражая задачу 1000классовой классификации ImageNet, на которой
обучалась модель MobileNet. Указание в вызове этого конструктора именованного
аргумента
alpha=0.25
позволяет выбрать меньшую по размеру версию MobileNet.
Можно выбрать и большие значения
alpha
(например,
0.75
или
1
), и будет работать
тот же самый код преобразования.
Последняя строка в предыдущем фрагменте кода сохраняет модель в указанный ката
лог на диске с помощью метода из модуля tensorflowjs. После завершения выполнения
этой строки в каталоге
/tmp/mobilnet_0.25
появится новый подкаталог, содержимое
которого будет примерно таким:
group1-shard1of6
group1-shard2of6
...
group1-shard6of6
model.js1on
Именно такой формат мы видели в подразделе 4.3.3, когда сохраняли обученную
модель TensorFlow.js на диск с помощью ее метода
save()
в версии TensorFlow.js
для Node.js. Следовательно, с точки зрения основанной на TensorFlow.js программы,