【问题标题】:How to properly upload a pretrained model in angular with tensorflow.js?如何使用 tensorflow.js 正确上传 angular 的预训练模型?
【发布时间】:2019-09-05 04:02:20
【问题描述】:

我正在尝试将预训练的 Keras 模型上传到我现有的 tensorflow.js 模型中,然后通过以正确格式传递张量来进行简单的预测。 我正在从项目中的本地驱动器(在资产文件夹中)加载模型

export class MotionAnalysisComponent implements OnInit {

  model: tf.LayersModel;

  ngOnInit() {
        this.loadModel()
    };

  async loadModel() {
      this.model = await 
  tf.loadLayersModel('C:/Users/..path to folder../assets/tfjs_model/model.json');
      console.log('Prediction from loaded model:');
      this.model.predict(tf.ones([60,60,60]));
    }

我在我的 html 代码中实现了一个按钮,它应该启动代码并在我的控制台中打印出预测。但我收到以下错误:

  • Fetch API 无法将 file:///C:/Users/..path 加载到文件夹../assets/tfjs_model/model.json。对于 CORS 请求,URL 方案必须是“http”或“https”

  • ERROR 错误:未捕获(承诺中):TypeError:无法获取 TypeError: 获取失败

【问题讨论】:

标签: javascript angular typescript tensorflow.js


【解决方案1】:

假设您在浏览器中运行此应用程序,您将无法访问本地文件资源。您需要将您的 model.json 文件放入 Angular 项目中的文件夹(例如“assets”),然后通过 http(s) 协议从那里加载模型。

例如这样:

async loadModel() {
  this.model = await tf.loadModel('/assets/tfjs_model/model.json');
}

【讨论】:

    【解决方案2】:

    需要注意的几点:

    与 model.save() 一样,loadLayersModel 函数采用类似 URL 的字符串参数,该参数以方案开头。这描述了我们尝试从中加载模型的目标类型。

    方案(方案:http:// 或 https://)后跟路径。

    类似url的字符串可以替换为匹配IOHandler接口的对象。

    tf.loadLayersModel() 函数是异步的。

    tf.loadLayersModel的返回值为tf.Model

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 1970-01-01
      • 2017-08-19
      • 2020-03-16
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多