首页 > 解决方案 > 离子中的Tensorflowjs

问题描述

我尝试在离子中使用 tensorflowjs。从 python 转换现有模型然后从 ionic 导入后,它仅在我在本地服务器上运行时才有效(http://localhost:8100/ionic-lab

但是,当我为 android tf.loadModel 方法不工作构建项目时,它无法从本地文件夹(即 assets/model )加载模型

我已经用 react-native 检查了这个链接Tensorflow.js ,但它没有帮助。我想,许多混合移动应用程序框架几乎都是同一条线。任何意见和建议将不胜感激。

    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();
          });
      }
    }

这是一条错误消息 无法获取

这是一个项目结构 项目结构

标签: ionic-frameworkhybrid-mobile-apptensorflow.js

解决方案


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);

推荐阅读