Tensorflow.js, функция предиката не определена - PullRequest
0 голосов
/ 16 июня 2019

Я занимаюсь разработкой расширения для 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 не является функцией

Как я могу это исправить?

1 Ответ

0 голосов
/ 16 июня 2019

Ваша асинхронная функция start не возвращает модель. Он возвращает Обещание, которое разрешается в модели.

Вам нужно подождать, пока это обещание не разрешится для работы с моделью. Вы можете сделать это, например, используя .then() в Promise и использовать параметр, с которым он вызывается.

...