我是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);
}
}});
错误来自convertedTestingData
和convertedTrainingData
。fitDataset
以a为参数tf.data.Dataset
。的实例tf.data.Dataset
具有异步迭代器。
如果convertedTestingData
(分别convertedTrainingData
)是一个js数组,则需要将其转换为tf.tensor或tf.data.Dataset。
该方法fit
将代替fitDataset
model.fit(tf.tensor(features), tf.tensor(labels))
使用生成器创建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);
}
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句