我是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);
}
}});
答案 0 :(得分:1)
错误来自<script src="https://www.gstatic.com/firebasejs/7.6.1/firebase-database.js"></script>
和convertedTestingData
。 convertedTrainingData
以fitDataset
作为参数。 tf.data.Dataset
的实例具有异步迭代器。
如果tf.data.Dataset
(分别为convertedTestingData
)是一个js数组,则需要将其转换为tf.tensor或tf.data.Dataset。
将使用方法convertedTrainingData
代替fit
fitDataset
使用生成器创建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