Мое намерение - уменьшить размер модели с 4.8M до 1.2M.
Версия TensorFlow.js
6.1.0
Версия браузера
Версия Chrome 73.0.3683.86 (Официальная сборка) (64-бит)
Я сделал следующие процедуры:
Step1 преобразование модели keras в модель tfjs.tensorflowjs_converter --quantization_bytes 1 --input_format=keras ./my_model.h5 ./assets
выводит 2 файла group1-shard1of1
и model.json
в папке assets
Step2 использовать модель вывода в моемПроект tenorflowjs this.model = await tf.loadModel('/assets/model.json');
выдает ошибки:
core.js:1448 ERROR Error: Uncaught (in promise): RangeError: byte length of Float32Array should be a multiple of 4
RangeError: byte length of Float32Array should be a multiple of 4
at new Float32Array (<anonymous>)
at eval (weights_loader.js:134)
at Array.forEach (<anonymous>)
at eval (weights_loader.js:130)
at Array.forEach (<anonymous>)
at Object.eval (weights_loader.js:115)
at step (weights_loader.js:32)
at Object.eval [as next] (weights_loader.js:13)
at fulfilled (weights_loader.js:4)
at ZoneDelegate.invoke (zone.js:388)
at resolvePromise (zone.js:824)
at eval (zone.js:734)
at rejected (app.component.ts:14)
at ZoneDelegate.invoke (zone.js:388)
at Object.onInvoke (core.js:4749)
at ZoneDelegate.invoke (zone.js:387)
at Zone.run (zone.js:138)
at eval (zone.js:882)
at ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:4740)
, если без флага quantization_bytes
в шаг 1 , выходная модель будет загружена нормально и работает нормально.