首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ML5 at model.classify():TypeError:无法将未定义或null转换为对象

ML5 at model.classify():TypeError:无法将未定义或null转换为对象
EN

Stack Overflow用户
提问于 2020-02-13 13:47:59
回答 1查看 278关注 0票数 2

我使用的是ML5 0.4.3版本,我试图在一个React应用程序中进行分类。

当我调用model.classify()时,会得到以下错误:

代码语言:javascript
复制
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

我完全不知所措。尝试将数据输入为单个对象[{ }]的数组和对象本身。有人能帮我弄清楚发生了什么以及如何解决吗?

我的输入如下所示

代码语言:javascript
复制
let inputs = {
  male: 1,
  female: 0,
  dob: 641710800000,
  // have more, but keeping it simple for this example...
}

我的输出是这样的

代码语言:javascript
复制
let output = [0, 1] // or [1, 0], depending if they have a job or not

下面是我的完整代码:

代码语言:javascript
复制
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) });
EN

回答 1

Stack Overflow用户

发布于 2022-03-06 14:52:44

我也有同样的问题,虽然这不是最好的解决办法,但这正是我所发现的。

使用nn.classify()会导致一个非常混乱的错误,但是,

使用nn.predict()不会。不过,它似乎已经(或很快就会)遭到反对。

我不知道为什么会发生错误,但我也发现将标签(输出)作为字符串而不是int也有效。

您的输出看起来与[0,1][1,0]不同,您可以执行"0""1"

当您调用model.normalizeData()时,我认为(不是100%确定)如果它显然是一个字符串,它会为您编码标签。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60209374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档