我正在开发chrome扩展程序,在其中使用训练有素的keras模型,并通过库tensorflow.js
下载。
从DevTools中可以看到,模型可以很好地加载,但是我不能使用它(不能使用函数predict()
)。
background.js
const start = async function() {
const model = await tf.loadLayersModel('https://raw.githubusercontent.com/myAcc/myRep/master/model.json');
return model;
}
const model = start();
chrome.extension.onRequest.addListener(function predict(data){
console.log(data);
console.log(model.predict(data));
var prediction = model.predict(data);
if (prediction[0] == 1){
alert("Yes");
}
else {
alert("No");
}
}
);
manifest.json
{
"manifest_version": 2,
"name": "my_project",
"version": "0.1",
"background": {
"scripts": ["tf.min.js", "background.js"]
},
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": ["jquery-3.1.1.min.js","content.js"]
}
],
"permissions": ["https://*/"]
}
我在background.js
中遇到错误
事件处理程序中的错误:TypeError:model.predict不是函数
我该如何解决?
答案 0 :(得分:0)
您的异步函数start
不返回模型。它返回一个可分解为模型的Promise。
您必须等到此Promise解决方案才能使用该模型。例如,您可以通过在Promise上使用.then()
并使用其调用的参数来实现。