无法转换由 tf.fromPixels() 创建的张量

Having trouble transforming tensor created by tf.fromPixels()

我想做的是转换一个使用 tf.fromPixels() 创建的张量并将其转换为 [28, 28] 然后将其用作输入以从经过训练的模型中获得预测在 Python。

我遇到的问题是模型中的第一层采用 [28, 28] 的输入形状。当我使用 tf.fromPixels() 在 NodeJS 中创建一个张量时,我得到一个形状为 [28, 28, 1] 的张量,但是,当我将其输入到模型预测函数中时,我从模型的第一个展平层收到一条错误消息.

Error when checking : expected flatten_input to have shape [null, 28, 28] but got array with shape [28, 28, 1]

在我继续之前,这是这部分的代码。

  prediction: async function(image) {
     const model = await tf.loadModel("file://models/model.json");

    const canvas = createCanvas(28, 28);
    const ctx = canvas.getContext("2d");

    loadImage(image).then(function(image) {
        ctx.drawImage(image, 0, 0, 28, 28);

        var image = tf.fromPixels(canvas, 1);
        var prediction = model.predict(image);

        return prediction;
     });
   }

我已经尝试将张量重塑为 [28, 28] 并尝试 [null, 28, 28],但是您可能会想象我在使用 null 时遇到错误。那么我的问题是如何将张量重塑为正确的形状?

从 canvas 获取图像后,您需要重塑张量

 var image = tf.fromPixels(canvas, 1);
 image = img.reshape([1, 28, 28]);

然后你可以将张量传递给你的模型