Javascript 在Node.js中使用Tensorflows通用句子编码器?

Javascript 在Node.js中使用Tensorflows通用句子编码器?,javascript,node.js,tensorflow,tensorflow.js,encoder,Javascript,Node.js,Tensorflow,Tensorflow.js,Encoder,我正在节点中使用tensorflow js,并尝试对输入进行编码 const tf = require('@tensorflow/tfjs-node'); const argparse = require('argparse'); const use = require('@tensorflow-models/universal-sentence-encoder'); 这些是导入,建议的导入语句(ES6)在我的节点环境中不允许吗?虽然他们在这里似乎工作得很好 const encodeData

我正在节点中使用tensorflow js,并尝试对输入进行编码

const tf = require('@tensorflow/tfjs-node');
const argparse = require('argparse');
const use = require('@tensorflow-models/universal-sentence-encoder');
这些是导入,建议的导入语句(ES6)在我的节点环境中不允许吗?虽然他们在这里似乎工作得很好

const encodeData = (tasks) => {
  const sentences = tasks.map(t => t.input);
  let model = use.load();
  let embeddings = model.embed(sentences);
  console.log(embeddings.shape);
  return embeddings;  // `embeddings` is a 2D tensor consisting of the 512-dimensional embeddings for each sentence.
};

此代码生成一个错误,model.embed不是函数。为什么?如何在node.js中正确实现编码器?

load
返回解析模型的承诺

use.load().then(model => {
  // use the model here
  let embeddings = model.embed(sentences);
   console.log(embeddings.shape);
})
如果您希望使用
await
,则
load
方法需要位于一个封闭的
async
函数中

const encodeData = async (tasks) => {
  const sentences = tasks.map(t => t.input);
  let model = await use.load();
  let embeddings = model.embed(sentences);
  console.log(embeddings.shape);
  return embeddings;  // `embeddings` is a 2D tensor consisting of the 512-dimensional embeddings for each sentence.
};

哇,我很震惊我没有意识到这一点。模型未定义,因为用户尚未完成加载。我想我还不习惯异步编程。非常感谢。