我相信解决办法就在某个地方,但我一直找不到。我最初在普通的tensorflow中训练模型,但它在转换后正在tensorflowjs中使用。我现在的错误是
Uncatch(promise)错误:大小(30000)必须与形状100,100,3的乘积匹配
虽然我有很多人通过我的尝试。
我现在的准则是
function preprocess(imageData) {
//const img_arr = cv.imread(imageData);
let inputTensor = tf.browser.fromPixels(imageData);
const offset = tf.scalar(255.0);
const normalized = tf.scalar(1.0).sub(inputTensor.div(offset));
const batchInputShape = [100, 100, 3];
const flattenedInput = tf.reshape(normalized, [batchInputShape]);
console.log(flattenedInput.shape);
return flattenedInput;
字符串
这个函数的结果然后被输入到我的模型中,这产生了误差。我相信解决办法是显而易见的,但我一直找不到。
我也试过
const batchInputShape = [null, 100, 100, 3];
const flattenedInput = tf.reshape(normalized, [batchInputShape, -1]);
型
虽然这也不公平。
2条答案
按热度按时间7cwmlq891#
如果有大量图像要处理,
字符串
输出形状:(batch_size,100,100,3)
z9smfwbn2#
首先,你可能想去掉batchInputShape周围的括号,因为tf.reform期望的是一个一维的数字数组,而你给它输入的是一个二维数组:null,100,100,3.
第二,我实际上不熟悉Tensorflow,但我猜在这种情况下null意味着任何数值都可以工作,因为你总是会得到一个可以乘以模型中的输入层Tensor的形状,无论该维度沿着的大小是多少。这是批量大小的情况,所以对您来说,它将是图像的数量。