javascript - Uncaught (in promise) TypeError: e.iterator is not a function. How to fix such error?

javascript - Uncaught (in promise) TypeError: e.iterator is not a function. How to fix such error?

我是 javascript 的新手,我正在实施二元分类。将训练和测试数据的csv文件转成数组后,发现这个错误: Uncaught (in promise) TypeError: e.iterator is not a function

这里是模型拟合:

await model.fitDataset(convertedTrainingData, 
   {epochs:100,
    validationData: convertedTestingData,
    callbacks:{
    onEpochEnd: async(epoch, logs) =>{
                             console.log("Epoch: " + epoch + " Loss: " + 
                             logs.loss + " Accuracy: " + logs.acc);
                                  }
                              }});

错误来自 convertedTestingDataconvertedTrainingDatafitDatasettf.data.Dataset 作为参数。 tf.data.Dataset 的一个实例有一个异步迭代器。

如果convertedTestingData(分别为convertedTrainingData)是一个js数组,需要将其转换为tf.tensor或tf.data.Dataset.

  • 将js数组转换为tf.tensor

将使用方法 fit 而不是 fitDataset

model.fit(tf.tensor(features), tf.tensor(labels))
  • 使用tf.data.Dataset

一个tf.data.Dataset是使用生成器创建的。

function createDataGenerator(data) {
    return function* dataGenerator() {
      let index = 0;
      while (index < data.length) {
        const feature = getFeatureTensorAtIndex(i) ; // get the feature tensor at the index
        const label = getLabelTensorAtIndex(i); // get the label tensor at the index
        index++;
        yield {xs: feature, ys: label};
      }
    }
}

const training = tf.data.generator(createDataGenerator(convertedTrainingData));
const testing = tf.data.generator(createDataGenerator(convertedTestingData));

然后可以用数据集ds

训练模型
await model.fitDataset(training,
    {
        epochs: 100,
        validationData: testing,
        callbacks: {
            onEpochEnd: async (epoch, logs) => {
                console.log("Epoch: " + epoch + " Loss: " +
                    logs.loss + " Accuracy: " + logs.acc);
            }
        }
    });