Я разрабатываю приложение в среде ionic3 для распознавания нарисованных символов, и у меня возникают проблемы с импортом модели. Я импортировал модель из Keras (преобразованную с tensorflowjs_converter
) в мое приложение ionic3 двумя различными способами:
- Файлы
model.json
и weight (осколки) помещаются в папку /assets/models
.
- Файлы
model.json
и weight (осколки) хранятся в хранилище Firebase.
При запуске приложения в браузере с помощью first method модель и веса загружаются правильно, и я могу прогнозировать классы. Но при запуске приложения тем же способом на моем устройстве Android с ionic cordova run android --device
модель, похоже, не получает данные из файлов весов, поскольку выдает следующую ошибку:
Based on the provided shape, [3, 3, 32, 64], the tensor should have 18432 values but has 917
.
Теперь я попытался разместить файлы в хранилище Firebase, чтобы попытаться исправить эту проблему. Я извлекаю model.json
из хранилища и все равно получаю ту же ошибку, что и выше в браузере и на устройстве .
Из опыта локального хранения в приложении осколков и модели я пришел к выводу, что осколки не распознаются в устройстве в обоих направлениях.
Кроме того, при использовании метода хранения Firebase в устройстве , при попытке извлечь модель из URL, я улавливаю следующую ошибку: Failed to fetch
.
Вот код получения осколков и модель:
const modelURL: string = await this.db.getModel();
const shards: string[] = await this.db.getShards();
modelURL
и shards
содержит URL-адреса загрузки из хранилища Firebase. Модель и осколки находятся на одном уровне:
/* Firebase Storage hierarchy */
https://firebasestorage.googleapis.com/v0/b/project-foo.com/o/model%2Fmodel.json?alt=media&token=******
https://firebasestorage.googleapis.com/v0/b/project-foo.com/o/model%2Fgroup1-shard1of4?alt=media&token=******
https://firebasestorage.googleapis.com/v0/b/project-foo.com/o/model%2Fgroup1-shard2of4?alt=media&token=******
https://firebasestorage.googleapis.com/v0/b/project-foo.com/o/model%2Fgroup1-shard3of4?alt=media&token=******
https://firebasestorage.googleapis.com/v0/b/project-foo.com/o/model%2Fgroup1-shard4of4?alt=media&token=******
Итак, я передаю URL загрузки модели в tf.loadModel
:
import * as tf from '@tensorflow/tfjs';
await tf.loadModel(modelURL).then(model => {
const output: any = model.predict(img);
});
Итак, есть ли способ передать осколки в tf.loadModel()
, извлеченные из хранилища базы данных, чтобы в моем устройстве и браузере я мог получить все данные, необходимые для прогнозирования по модели?
Спасибо за вашу помощь.