我尝试在离子中使用tensorflowjs。从python转换现有模型然后从离子导入它只有当我在我的本地服务器上运行时才有效(http://localhost:8100/ionic-lab)
但是,当我为android tf.loadModel方法构建项目无法正常工作时,它无法从本地文件夹(即资产/模型)加载模型
我已经检查了这个链接Tensorflow.js with react-native ,但它没有帮助。我想,很多混合移动应用程序框架几乎都是一样的。任何建议和意见将不胜感激。
import {Component} from '@angular/core';
import {IonicPage, AlertController} from 'ionic-angular';
import {HttpClient} from "@angular/common/http";
import * as tf from "@tensorflow/tfjs";
@IonicPage()
@Component({
selector: 'page-tfpretrainedversion',
templateUrl: 'tfpretrainedversion.html',
})
export class TfpretrainedversionPage {
kerasTraindedModel: tf.Model;
KERAS_MODEL_JSON = 'assets/model/model.json';
constructor(private httpClient: HttpClient,
private alertCtrl: AlertController) {
this.loadPretrainedModel();
}
loadPretrainedModel() {
tf.loadModel(this.KERAS_MODEL_JSON)
.then((result) => {
this.kerasTraindedModel = result;
})
.catch((error)=>{
let prompt = this.alertCtrl.create({
title: 'Error',
subTitle: error,
buttons: ['OK']
});
prompt.present();
});
}
}
这是一个错误消息Failed to fetch
这是一个项目结构Project structure
TensorflowJs通过fetch()加载模型。 fetch()不支持加载本地文件。 https://fetch.spec.whatwg.org/
我的解决方法:
使用polyfill(https://github.com/github/fetch)并替换fetch。
window.fetch = fetchPolyfill;
现在,可以加载本地文件(file:///),如:
const modelUrl = './model.json'
const model = await tf.loadGraphModel(modelUrl);