1

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

topology.ts:1114 输入张量的形状 ([null,1024]) 与 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();

  }

如何解决警告信息?

4

1 回答 1

1

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

为了使预测工作,模型的输入应该与预测的张量形状相匹配。要么输入模型发生变化,要么图像以适合模型的方式重塑。

于 2020-02-18T13:04:01.890 回答