node.js - 转换 tf.fromPixels() 创建的张量时遇到问题

标签 node.js tensorflow tensorflow.js

我想做的是转换使用 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;
     });
   }

我尝试将张量 reshape 为 [28, 28] 并尝试 [null, 28, 28],但是正如您可能想象的那样,当我遇到错误时使用空值。那么我的问题是如何将张量 reshape 为正确的形状?

最佳答案

从 Canvas 中获取图像后,您需要 reshape 张量

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

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

关于node.js - 转换 tf.fromPixels() 创建的张量时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51545231/

相关文章:

javascript - 未知正则化器 : L2 in tensorflowjs

node.js - Kendo UI Angular 将文件作为 Node.JS 上传到后端

python - 如何在Tensorflow中获得LSTM的密集层输出?

machine-learning - ValueError : Error when checking model target: expected dense_4 to have shape (None, 4) 但得到形状为 (13252, 1) 的数组

python - 如何使用GPU在Google合作实验室中运行代码?

javascript - 解决在chrome中运行的tensorflow js的 "Uncaught (in promise) TypeError: fs.writeFile is not a function"的替代方法

node.js - 在没有 JSON 文件的情况下,如何在 Heroku 上使用 Google 默认凭据?

node.js - 如何使用 Promisified Node exec 将文本通过管道传输到命令中

node.js - 如何在将数据添加到nodejs中的文件后立即从音频文件中读取数据作为缓冲区?

tensorflow - 转换 Mozilla DeepSpeech 模型以在 tensorflow.js 环境中使用