Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebWorker中的TensorflowJS通用语句编码器_Javascript_Tensorflow_Web Worker_Tensorflow.js - Fatal编程技术网

Javascript WebWorker中的TensorflowJS通用语句编码器

Javascript WebWorker中的TensorflowJS通用语句编码器,javascript,tensorflow,web-worker,tensorflow.js,Javascript,Tensorflow,Web Worker,Tensorflow.js,试图在webworker中运行USE以避免性能问题,但它缺少embed()方法 网络工作者 模型内部没有嵌入(),这是主线程的情况 甚至可以在webworker中运行USE吗?通用句子编码器(USE)可以在webworker中使用。请参见下面这个工作片段,其中包含从工作线程发送到主线程的结果 常量辅助函数=()=> { 进口文件('https://cdn.jsdelivr.net/npm/@张量流/tfjs@1.2.9/地区/运输署(民建联);; 进口文件('https://cdn.jsde

试图在webworker中运行USE以避免性能问题,但它缺少embed()方法

网络工作者 模型内部没有嵌入(),这是主线程的情况

甚至可以在webworker中运行USE吗?

通用句子编码器(USE)可以在webworker中使用。请参见下面这个工作片段,其中包含从工作线程发送到主线程的结果


常量辅助函数=()=>
{
进口文件('https://cdn.jsdelivr.net/npm/@张量流/tfjs@1.2.9/地区/运输署(民建联);;
进口文件('https://cdn.jsdelivr.net/npm/@张量流模型/通用句-encoder@1.1.1/dist/universal-station-encoder.min.js');
tf.倒退(“cpu”);
onmessage=message=>
{
console.log(“来自工作者”)
使用.load().then(模型=>
{
常量句子=[
“我喜欢我的手机。”,
“你的手机看起来很棒。”
];
嵌入(句子)。然后(异步嵌入=>
{ 
console.log(等待嵌入)
const vec=await embeddings.array();
常数余弦=tf损失余弦距离(向量[0],向量[1],0);
常量结果=等待余弦.data();
log(`${Math.round((1-result)*100)}%`);
postMessage({res:cosine.dataSync(),shape:cosine.shape})
});
});
};
}
如果(窗口!=self)
worker_函数();
const-worker=new-worker(URL.createObjectURL(新Blob([“(“+worker\u function.toString()+”)”),{type:'text/javascript'}));
worker.postMessage({});
worker.onmessage=(消息)=>{
console.log('来自主线程')
const{data}=消息
tensor(message.data.res,message.data.shape).print()
}

通用句子编码器(USE)可以在webworker中使用。请参见下面这个工作片段,其中包含从工作线程发送到主线程的结果


常量辅助函数=()=>
{
进口文件('https://cdn.jsdelivr.net/npm/@张量流/tfjs@1.2.9/地区/运输署(民建联);;
进口文件('https://cdn.jsdelivr.net/npm/@张量流模型/通用句-encoder@1.1.1/dist/universal-station-encoder.min.js');
tf.倒退(“cpu”);
onmessage=message=>
{
console.log(“来自工作者”)
使用.load().then(模型=>
{
常量句子=[
“我喜欢我的手机。”,
“你的手机看起来很棒。”
];
嵌入(句子)。然后(异步嵌入=>
{ 
console.log(等待嵌入)
const vec=await embeddings.array();
常数余弦=tf损失余弦距离(向量[0],向量[1],0);
常量结果=等待余弦.data();
log(`${Math.round((1-result)*100)}%`);
postMessage({res:cosine.dataSync(),shape:cosine.shape})
});
});
};
}
如果(窗口!=self)
worker_函数();
const-worker=new-worker(URL.createObjectURL(新Blob([“(“+worker\u function.toString()+”)”),{type:'text/javascript'}));
worker.postMessage({});
worker.onmessage=(消息)=>{
console.log('来自主线程')
const{data}=消息
tensor(message.data.res,message.data.shape).print()
}

这很奇怪,出于某种原因,我的
model
只有两个属性(model和tokenizer)。你能告诉我你的
模型
对象中有什么吗?模型有两个属性:模型和标记器,但是在原型上,我们可以看到有方法:
加载
嵌入
加载模型
。如果使用的是typeScript,则错误与typeScript推断的类型有关,而不是与库有关。您可以考虑将<代码>模型对象转换为<代码> < < />代码>,错误将消失。或者你可以考虑给一个允许使用嵌入式感谢的模型,由于某种原因,我不能在WebWork中使用异步等待(用Webpack来回应App),不得不退回承诺。我想这是Weback特有的东西,但花了我一天的时间。也许你知道网络工作者这种行为的原因?这很奇怪,出于某种原因,我的
模型
只有两个属性(模型和标记器)。你能告诉我你的
模型
对象中有什么吗?模型有两个属性:模型和标记器,但是在原型上,我们可以看到有方法:
加载
嵌入
加载模型
。如果使用的是typeScript,则错误与typeScript推断的类型有关,而不是与库有关。您可以考虑将<代码>模型对象转换为<代码> < < />代码>,错误将消失。或者你可以考虑给一个允许使用嵌入式感谢的模型,由于某种原因,我不能在WebWork中使用异步等待(用Webpack来回应App),不得不退回承诺。我想这是Weback特有的东西,但花了我一天的时间。也许你知道网络工作者这种行为的原因?
importScripts('https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.2.9/dist/tf.min.js');
importScripts('https://cdn.jsdelivr.net/npm/@tensorflow-models/universal-sentence-encoder@1.1.1/dist/universal-sentence-encoder.min.js');
tf.setBackend('cpu');

onmessage = message => {
  use.load().then(model => {
    const sentences = [
      'I like my phone.',
      'Your cellphone looks great.'
    ];
    /**
      model = { model, tokenizer }
    */
    model.embed(sentences).then(async embeddings => {
      const vec = await embeddings.array();
      const cosine = tf.losses.cosineDistance(vec[0], vec[1], 0);
      const result = await cosine.data();
      console.log(`${Math.round((1 - result) * 100)}%`);
    });
  });
}