我使用的是ML5 0.4.3版本,我试图在一个React应用程序中进行分类。
当我调用model.classify()时,会得到以下错误:
TypeError: Cannot convert undefined or null to object
at entries (<anonymous>)
at index.js:676
at Array.map (<anonymous>)
at t.<anonymous> (index.js:668)
at x (runtime.js:62)
at Generator._invoke (runtime.js:296)
at Generator.t.<computed> [as next] (runtime.js:114)
at i (asyncToGenerator.js:17)
at asyncToGenerator.js:28我完全不知所措。尝试将数据输入为单个对象[{ }]的数组和对象本身。有人能帮我弄清楚发生了什么以及如何解决吗?
我的输入如下所示
let inputs = {
male: 1,
female: 0,
dob: 641710800000,
// have more, but keeping it simple for this example...
}我的输出是这样的
let output = [0, 1] // or [1, 0], depending if they have a job or not下面是我的完整代码:
people_arr = json.voters_arr;
keys = ["male", "female", "dob"];
let model_options = {
inputs: keys,
outputs: ["job"],
task: "classification"
};
let model = ml5.neuralNetwork(model_options);
for (let person of people_arr) {
let inputs = {
male: person.male, // 0 or 1
female: person.female, // 0 or 1
dob: person.dob // milliseconds
};
let output = {};
output.job = person.job; // [0, 1] or [1, 0]
model.addData(inputs, output);
}
model.normalizeData();
let train_options = { epochs: 100 }
model.train(train_options, whileTraining);
.then(() => {
console.log("pre classify");
return model.classify({ male: 0, female: 1, dob: 463726800000 }); // <-- error happening here
})
.then((err, results) => {
if (err) { console.log("error") }
else {
let new_arr = results.splice(100);
console.log("results : ", new_arr);
setValues({...values, results: new_arr })
}
})
.catch((err) => { console.log("err : ", err) });发布于 2022-03-06 14:52:44
我也有同样的问题,虽然这不是最好的解决办法,但这正是我所发现的。
使用nn.classify()会导致一个非常混乱的错误,但是,
使用nn.predict()不会。不过,它似乎已经(或很快就会)遭到反对。
我不知道为什么会发生错误,但我也发现将标签(输出)作为字符串而不是int也有效。
您的输出看起来与[0,1]或[1,0]不同,您可以执行"0"或"1"
当您调用model.normalizeData()时,我认为(不是100%确定)如果它显然是一个字符串,它会为您编码标签。
https://stackoverflow.com/questions/60209374
复制相似问题