TypeError: trackerFn(...).registerTensor is not a function

TypeError: trackerFn(...).registerTensor is not a function

这是我的设置:

Package.json:

"@tensorflow-models/mobilenet": "^2.0.4",
"@tensorflow/tfjs": "^1.6.0",
"@tensorflow/tfjs-node": "^1.2.11",

注意:必须更改为这些设置才能解决

我的文件架构:

** 我的代码:**

const readImage = path => {
  const imageBuffer = fs.readFileSync(path);
  const tfimage = tfnode.node.decodeImage(imageBuffer);
  return tfimage;
}


const performTheImageClassification = async path  => {
    const image = readImage("img_to_predict/actual.jpeg");
     const mobilenetModel = await mobilenet.load();
     const predictions = await mobilenetModel.classify(image);
     console.log('Classification Results:', predictions);
}

终端输出:

 (node:65191) UnhandledPromiseRejectionWarning: TypeError: trackerFn(...).registerTensor is not a function
    at new Tensor (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs-node/node_modules/@tensorflow/tfjs-core/dist/tensor.js:246:21)
    at Function.Tensor.make (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs-node/node_modules/@tensorflow/tfjs-core/dist/tensor.js:261:16)
    at makeTensor (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs-node/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops.js:98:28)
    at Object.scalar (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs-node/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops.js:127:12)
    at NodeJSKernelBackend.decodeJpeg (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs-node/dist/nodejs_kernel_backend.js:1513:38)
    at /Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs-node/dist/image.js:103:14
    at /Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-core/dist/engine.js:388:22
    at Engine.scopedRun (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-core/dist/engine.js:398:23)
    at Engine.tidy (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs/node_modules/@tensorflow/tfjs-core/dist/engine.js:387:21)
    at Object.tidy (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs-node/node_modules/@tensorflow/tfjs-core/dist/globals.js:172:28)
    at decodeJpeg (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs-node/dist/image.js:101:24)
    at Object.decodeImage (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/node_modules/@tensorflow/tfjs-node/dist/image.js:209:20)
    at readImage (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/server.js:97:31)
    at performTheImageClassification (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/server.js:88:19)
    at client.search.then.then (/Users/cyrus/Documents/Code/01. Code/debord_slow_sender_meme/server.js:81:12)
    at process._tickCallback (internal/process/next_tick.js:68:7)

我有完全相同的错误,当我试图修复这个错误时,其他错误出现了,这个错误一直持续着。我最终得到了 3 个不同版本的 tfjs tfjs-node 和 mobilenet。

而且我认为这个错误肯定是由版本不匹配引起的。我通过删除 nodemodules 文件夹下的 tensorflow 文件夹 来修复它,然后只是 运行

npm i @tensorflow/tfjs @tensorflow/tfjs-node

我特别指出,因为首先我试图通过 运行ning npm uninstall 命令只卸载这两个包,然后重新安装它们,但显然在 nodemodules 世界中事情比这更复杂所以你需要卸载整个tensorflow包,因为例如我有一个完全不同版本的tfjs-converter,另一个版本的tfjs-coretfjs-data 它真的很混乱所以确保你删除了整个 tensorflow 包和 运行 上面写的命令来安装必要的包。

这将自动安装这两个包的最新版本,当我发布此答案时,它们应该是 1.7.4。现在它对我来说完美无缺,我希望它也对你有用。

这是我的 package.json 如果你想确定的话:

"@tensorflow-models/mobilenet": "^2.0.4",
"@tensorflow/tfjs": "^1.7.4",
"@tensorflow/tfjs-node": "^1.7.4",