TensofrlowJS 输入与模型预期输入不匹配

TensofrlowJS input mismatch from model expected input

我将 Keras 模型转换为 tfjs,当 运行 它在浏览器中出现时,我收到以下警告:

topology.ts:1114 The shape of the input tensor ([null,1024]) does not match the expectation of layer dense: [null,[224,224,3]]

模型摘要如下所示:

_________________________________________________________________
 Layer (type)                 Output shape              Param #   
=================================================================
 mobilenet_1.00_224 (Model)   [null,1024]               3228864   
_________________________________________________________________
 dense (Dense)                [null,256]                262400    
_________________________________________________________________
 dropout (Dropout)            [null,256]                0         
_________________________________________________________________
 dense_1 (Dense)              [null,512]                131584    
_________________________________________________________________
 dropout_1 (Dropout)          [null,512]                0         
_________________________________________________________________
 dense_2 (Dense)              [null,7]                  3591      
=================================================================
Total params: 3626439
Trainable params: 397575
Non-trainable params: 3228864

对于预测,我实施了以下方法:

async function classifyImage() {

    const cam = await tf.data.webcam(video); //video is a webcam element with 224x224 pixels
    const img = await cam.capture();
    console.log(img.shape);
    let new_frame = img.reshape([1, 224, 224, 3]);

    predictions = await model.predict(new_frame).print();

  }

如何解决警告信息?

错误很简单。该模型期望输入形状为 [b, 1024](b 表示批量大小)。您将形状为 [1, 224, 224, 3] 的图像作为参数传递给模型。不用说它不会起作用。

要使预测有效,模型的输入应与预测的张量形状相匹配。输入模型发生变化或图像以适合模型的方式重塑。