【发布时间】:2018-05-11 15:32:21
【问题描述】:
在异步/等待方面需要帮助。
目前正在学习https://github.com/tensorflow/tfjs-converter。
我对这部分代码感到困惑(加载我的 python 转换保存的 js 模型以在浏览器中使用):
import * as tf from '@tensorflow/tfjs';
import {loadFrozenModel} from '@tensorflow/tfjs-converter';
/*1st model loader*/
const MODEL_URL = './model/web_model.pb';
const WEIGHTS_URL = '.model/weights_manifest.json';
const model = await loadFrozenModel(MODEL_URL, WEIGHTS_URL);
/*2nd model execution in browser*/
const cat = document.getElementById('cat');
model.execute({input: tf.fromPixels(cat)});
我注意到它使用的是 es6(导入/导出)和 es2017(异步/等待),所以我将 babel 与 babel-preset-env、babel-polyfill 和 babel-plugin-transform-runtime 一起使用。我使用了 webpack,但切换到 Parcel 作为我的捆绑器(正如 tensorflow.js 开发人员所建议的那样)。在这两个捆绑器中,我不断收到等待应该包装在异步函数中的错误,因此我将代码的第一部分包装在异步函数中,希望获得 Promise。
async function loadMod(){
const MODEL_URL = './model/web_model.pb';
const WEIGHTS_URL = '.model/weights_manifest.json';
const model = await loadFrozenModel(MODEL_URL, WEIGHTS_URL);
}
loadMod();
现在两个构建器都说“等待是保留字”。 vscode eslinter 说 loadMod();有一个 Promise 无效。 (所以承诺失败或被拒绝?) 我正在尝试使用相对路径引用 javascript 模型文件,或者这是错误的吗?我必须从云端“服务”机器学习模型吗?它不能来自相对本地路径?
任何建议将不胜感激。谢谢!
【问题讨论】:
-
以异步方式包装内容的最简单方法是
(async () => { your code})()
标签: javascript asynchronous tensorflow async-await tensorflow.js