Uncaught (in promise) Error: Received an array of 30 Tensors, but expected 1 to match the input keys dense_Dense1_input

Uncaught (in promise) Error: Received an array of 30 Tensors, but expected 1 to match the input keys dense_Dense1_input

我认识到这是期望输入形状的模型与张量的维度之间的形状不匹配的问题。但是我尝试修改 inputShape 参数但没有任何帮助,

我遇到了同样的错误“收到了一个包含 30 个张量的数组,但预计 1 个与输入键匹配 dense_Dense1_input

const trainingUrl = "/data/wdbc-train.csv";
const trainingData = tf.data.csv(trainingUrl, {
  columnConfigs: {
    diagnosis: {
      isLabel: true,
    },
  },
});
const convertedTrainingData = trainingData.map(({ xs, ys }) => {
  return { xs: Object.values(xs), ys: Object.values(ys) };
});
const numOfFeatures = (await trainingData.columnNames()).length - 1;

const model = tf.sequential();
model.add(
  tf.layers.dense({ inputShape: [numOfFeatures], activation: "relu", units: 5 })
);
model.add(tf.layers.dense({ units: 1, activation: "sigmoid" }));
await model.fitDataset(convertedTrainingData, {
  epochs: 100,
  callbacks: {
    onEpochEnd: async (epoch, logs) => {
      console.log(
        "Epoch: " + epoch + " Loss: " + logs.loss + " Accuracy: " + logs.acc
      );
    },
  },
});

列数为30

我认为您只是忘记了使用 batch()tf.data.csv() 对象进行批处理。

const convertedTrainingData = trainingData
  .map(({ xs, ys }) => {
    return { xs: Object.values(xs), ys: Object.values(ys) };
  })
  .batch(10);