隐式形状不能为分数

问题描述

我正在尝试在TensorFlow中创建标签。 这是image,位于下面的代码中。

async function main(){
    const model = await mobilenet.load();
    const classifier = await knnClassifier.create();
    const buf = fs.readFileSync('./41.png');
    const decode = tfnode.node.decodeImage(buf);
    console.log(decode)
    return new Promise(async resolve => {
        const embedding = model.infer(
            decode,false
        );
        classifier.addExample(
            embedding,'rong'
        )
    })
}

我得到了这个错误:

(node:17992) UnhandledPromiseRejectionWarning: Error: The implicit shape can't be a fractional number. Got 200704 / 150528

这是我console.log()进行解码的时间:

Tensor {
  kept: false,isDisposedInternal: false,shape: [ 475,475,4 ],dtype: 'int32',size: 902500,strides: [ 1900,dataId: {},id: 264,rankType: '3',scopeId: 311
}

解决方法

昨晚我和你有同样的问题。我想知道为什么它不能用于PNG图像,而JPG图像却能正常工作。事实证明,它需要做一些number of channels的工作,用于从缓冲区解码图像。

当我们使用decodeImage函数(reference)时,它为JPG使用3个通道,为PNG使用4个通道。但是,该模型需要3个通道。解码图像后,我们可以明确告知decodeImage对要解码的所有类型的图像使用3个通道。

修改后的代码如下:

async function main() {
    const model = await mobilenet.load();
    const classifier = await knnClassifier.create();
    const buf = fs.readFileSync('./41.png');
    const decode = tfnode.node.decodeImage(buf,3);

    return new Promise(async resolve => {
        const embedding = model.infer(decode,false);
        classifier.addExample(embedding,'rong');
    })
}

decodeImage现在接受第二个参数,指示在图像解码期间要使用的通道数。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...