Глава 12. Тестирование, оптимизация и развертывание моделей
515
вание весов этой модели после обучения — для ускорения загрузки страницы.
Однако перед этим необходимо убедиться, что подобное квантование не приведет
к существенному ухудшению качества генерируемых изображений. Проверьте,
насколько приемлем в этом смысле каждый из вариантов 16 и 8битного кван
тования. Воспользуйтесь технологическим процессом
tensorflowjs_converter
,
описанным в подразделе 12.2.1. Какими критериями оценки качества сгенериро
ванных изображений MNIST вы воспользуетесь в данном случае?
2. Одно из преимуществ моделей TensorFlow, работающих в виде расширения
Chrome, — возможность управлять самим браузером Chrome. В примере speech
commands из главы 4 мы показали, как распознавать голосовые команды с помо
щью сверточной модели. API расширений Chrome предоставляет возможность
выполнения запросов и перехода с вкладки на вкладку. Попробуйте встроить
модель speechcommands в расширение и научите его распознавать фразы next
tab (следующая вкладка) и previous tab (предыдущая вкладка). Воспользуйтесь
результатами работы этого классификатора для управления тем, какая вкладка
браузера активна в настоящий момент.
3. Инфобокс 12.3 описывает, как правильно измерять время выполнения вызова
метода
predict()
модели TensorFlow.js (выполнения вывода), и нюансы этого
процесса. В данном упражнении загрузите модель MobileNetV2 в TensorFlow.js
(чтобы освежить свои знания об этом, см. пример simpleobjectdetection в раз
деле 5.2) и измерьте длительность выполнения его вызова метода
predict()
.
А. Сначала сгенерируйте тензор изображений со случайными значениями фор
мы
[1,
224,
224,
3]
и измерьте длительность вывода модели на его основе,
следуя изложенному в инфобоксе 12.3 алгоритму. Сравните результаты такого
хронометража с вызовом
array()
или
data()
для выходного тензора (или без
него). Какой из вариантов выполняется быстрее? В каком случае время из
меряется правильно?
Б. Постройте график значений длительности выполнения при проведении пра
вильного измерения 50 раз в цикле с помощью линейной диаграммы из би
блиотеки tfjsvis (глава 7) и почувствуйте колебания этих значений. Заметно
ли, что первые несколько измерений существенно отличаются от остальных?
С учетом этого наблюдения обсудите важность «прогрева» при оценке быстро
действия.
В. В отличие от задач А и Б возьмите вместо сгенерированного случайным обра
зом входного тензора настоящий тензор изображения (например, полученный
из элемента
img
с помощью метода
tf.browser.fromPixels()
) и повторите из
мерения из задачи Б. Влияет ли существенно содержимое входного тензора
на хронометраж?
Г. Вместо выполнения вывода для отдельного примера данных (размер бат
ча = 1) попробуйте увеличить размер батча до 2, 3, 4 и т. д., вплоть до относи
тельно большого числа, скажем 32. Является ли зависимость между средним
временем выполнения вывода и размером батча монотонно возрастающей?
Линейной?
516
Do'stlaringiz bilan baham: |