无法转换由 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]);
然后你可以将张量传递给你的模型
我想做的是转换一个使用 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]);
然后你可以将张量传递给你的模型