node.js中的Tensorflow QNA模型返回空数组

问题描述

我已遵循https://github.com/tensorflow/tfjs-models/tree/master/qna的设置:


      require('@tensorflow/tfjs-node');
      const tf = require('@tensorflow/tfjs');
      const QNA = require('@tensorflow-models/qna');
    
      await tf.ready();
      let model = await QNA.load();
      console.log('\n\n model loaded');
    
      let answers = await model.findAnswers(question,text);

但是,即使使用演示网页上的text sample,它也总是返回空数组作为答案。

我做错了什么?

编辑:在Windows10专业版上的tensorflow v.2.3.0,QNA v.1.0.0 node.js v.12.12.0

与tensorflow v.1.5.2相同的行为,在QNA中被指定为依赖项,并在正常的浏览器演示中使用。所有可用的后端引擎(cpu,wasm,本机节点)都一样

事实上,github存储库中的演示不会产生答案,而google上的相同文本和相同问题的答案会产生答案。

那么,在哪里可以下载在Google上运行的代码

解决方法

虽然很脏,但对于那些想要使用此模型而又不研究导致问题的原因和原因的人,过程如下:

  1. https://github.com/tensorflow/tfjs-models/tree/244d4cdc6eee673ab1d03baccdb06db26bde86fa下载zip
  2. 提取qna文件夹并在其中打开终端/命令外壳
  3. 纱线安装
  4. cd演示
  5. 纱线安装
  6. 纱线手表
  • 它将在“ qna”根目录下生成demo / node_modules / @ tensorflow-models / qna文件夹。
  1. cd node_modules / @ tensorflow-models / qna 使用那里找到的“ dist”文件夹作为分发版本,而不是@ tensorflow-models / qna

此外,还有一个提示:从https://tfhub.dev/tensorflow/tfjs-model/mobilebert/1的“ .JS”选项卡中下载经过训练的模型数据(解压缩后为100Mbytes),然后从本地磁盘使用它。它将大大减少模型加载时间(从90秒以上到3秒)

let folder = process.cwd();
// load from local file takes about 3260 ms
let model = await QNA.load({modelUrl: 'file://'+ folder +'/mobilebert/model.json'});