tensorflow 检查时出错:输入的形状应为[null,300,300,3],但得到的数组形状为[1,300,300,4]

efzxgjgh  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(155)

我在Node.js应用程序中使用tfjs-node来加载模型和预测结果。它提供了不错的结果,但对于某些图像,显示了以下错误:

Error when checking : expected input to have shape [null,300,300,3] but got array with shape [1,300,300,4].

加载和预测结果的代码:

const loadModel = async (imagePath) => {
  const image = fs.readFileSync(imagePath);
  let tensor = tf.node.decodeImage(image);

  const resizedImage = tensor.resizeNearestNeighbor([300, 300]);
  const batchedImage = resizedImage.expandDims(0);
  const input = batchedImage.toFloat().div(tf.scalar(255));

  const model = await tf.loadLayersModel(
    process.env.ML_MODEL_PATH || "file://./ml-model/model.json"
  );

  let predictions = await model.predict(input).data();
  predictions = Array.from(predictions);
};

怎么解决?谢谢。

cnjp1d6j

cnjp1d6j1#

用途

let tensor = tf.node.decodeImage(image, 3);

如果允许图像具有类似PNG的透明度,则它将去除α。
Tensorflow documentation source.
另一种可能性是你有CMYK图像。对于这一点我不知道答案,除了你可以尝试转换为RGB。

相关问题