错误:张量必须具有由正整数组成的形状,但形状为[100,]

时间:2020-02-18 11:54:32

标签: node.js tensorflow tensorflow.js mobilenet tensorflow-ssd

要获得社区的帮助,我们鼓励使用Stack Overflow和tensorflow.js标签。

浏览器版本

不在浏览器中,使用Node命令

描述问题或功能要求

我正在将 coco-SSD的tensorflow.js用于mobilenet v2 当我使用预先训练的模型[coco-ssd]时,它工作得很好,请参见下面的代码

const tfnode = require('@tensorflow/tfjs-node');
const cocoSsd = require('./coco-ssd.js'); 
const fs = require('fs');
const readImage = path => {
    const imageBuffer = fs.readFileSync(path);
    const tfimage = tfnode.node.decodeImage(imageBuffer);
    return tfimage;
  }
  const objectDetection = async path => {
    const image = readImage(path);
    const loadlModelPromise = await cocoSsd.load({base: "mobilenet_v2"})
    const result = await loadlModelPromise.detect(image);
    console.log('Classification Results:', result);
  }
  objectDetection(process.argv[2]);

在调用上面的代码node filename.js ./testImage.png时,它会提供所需的结果。

现在我有一个经过定制培训的coco-ssd模型,已使用以下命令将其转换为tensorflow.js格式 **tensorflowjs_converter --input_format=tf_saved_model --output_node_names='num_detections,detection_boxes,detection_scores,detection_classes' --signature_name=serving_default --saved_model_tags=serve ./saved_model ./ ** 转换后的 model.json 后,我编写了以下代码以推断自定义转换后的模型。

const tfnode = require('@tensorflow/tfjs-node');
const cocoSsd = require('./coco-ssd.js'); 
const fs = require('fs');
const readImage = path => {
    const imageBuffer = fs.readFileSync(path);
    const tfimage = tfnode.node.decodeImage(imageBuffer);
    return tfimage;
  }
  const objectDetection = async path => {
    const image = readImage(path);
    const modelUrl = 'file:///Users/xx/model.json'
    const loadlModelPromise = await cocoSsd.load({base: "mobilenet_v2",modelUrl: modelUrl})
    const result = await loadlModelPromise.detect(image);
    console.log('Classification Results:', result);
  }
  objectDetection(process.argv[2]);

现在,当我运行上述代码node fileName.js ./testImage.png时,出现波纹管错误

(节点:32504)UnhandledPromiseRejectionWarning:错误:张量必须具有由正整数组成的形状,但形状为[100,]。 在断言处(C:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ util.js:105:15) 在C:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ util.js:646:9 在Array.forEach() 在Object.assertNonNegativeIntegerDimensions(C:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ util.js:645:11) 在makeTensor(C:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ ops \ tensor_ops.js:73:16) 在Object.tensor2d(C:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ ops \ tensor_ops.js:189:12) 在C:\ Users \ xx \ tfJs \ tensorflowJs Classifier \ coco-ssd.js:17:7039 在C:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ engine.js:388:22 在Engine.scopedRun(C:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ engine.js:398:23) 在Engine.tidy(C:\ Users \ xx \ tfJs \ node_modules @ tensorflow \ tfjs-core \ dist \ engine.js:387:21)

请帮助:-)

0 个答案:

没有答案