javascript-未捕获(承诺)TypeError:e.iterator不是函数。如何解决这种错误?

时间:2019-12-29 12:45:01

标签: javascript machine-learning tensorflow.js

我是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);
                                  }
                              }});

1 个答案:

答案 0 :(得分:1)

错误来自<script src="https://www.gstatic.com/firebasejs/7.6.1/firebase-database.js"></script> convertedTestingDataconvertedTrainingDatafitDataset作为参数。 tf.data.Dataset的实例具有异步迭代器。

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

  • 将js数组转换为tf.tensor

将使用方法convertedTrainingData代替fit

fitDataset
  • 使用tf.data.Dataset

使用生成器创建tf.data.Dataset。

model.fit(tf.tensor(features), tf.tensor(labels))

然后可以使用数据集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