- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ML5 库在我正在构建的 React 应用程序中进行分类。
我的浏览器出现以下错误
错误:您在使用损失“categorical_crossentropy”时传递形状为 11342,1 的目标数组。 “categorical_crossentropy”期望目标是形状为 [样本、类] 的二元矩阵(1 和 0)。
在引发此错误的几个 Github 问题中,解释是该错误表明您的数据集中只有 1 种类型的对象。您的数据集中必须有 2 个或更多不同的对象类。
这是链接 here 中的说明。和 here .
我不知道这意味着什么。我的数据中有 6 个输入和 2 个输出。我的输入看起来像这样
let inputs = {
male: 1,
female: 0,
dob: 641710800000,
// have more, but keeping it simple for this example...
}
我的输出看起来像这样
let output = {
job: 1 // or 0, if they have a job or not, for example. i.e., two possible outputs
}
但是,我仍然收到错误。有人可以帮助我理解为什么以及如何解决它吗?
下面是我的代码:
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,
female: person.female,
dob: person.dob
};
let output = {};
output.job = person.job; // either 0 or 1
model.addData(inputs, output);
}
model.normalizeData();
let train_options = { epochs: 100 }
model.train(train_options, whileTraining); // <-- error happening here
.then(() => {
console.log("pre classify");
return model.classify(new_person_arr);
})
.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) });
最佳答案
Categorical cross-entropy
期望一个 one-hot 向量作为标签,而不是单个数字。例如,假设有三个人:Michael
, Jim
,和Dwight
。 Michael
和Jim
有工作,Dwight
没有。假设没有工作将您归为 0
类别,并且拥有一个将使您进入类别 1
。在这种情况下,标签将如下所示:
[[0,1], # Michael's label
[0,1], # Jim's label
[1,0]] # Dwight's label
Michael
和Jim
属于类别1
,所以他们有 1
在索引1
和一个 0
在所有其他指数中。 Dwight
属于类别 0
,所以他有 1
在索引0
和一个 0
所有其他指数。
如果您想使用单个数字作为标签(即 0
或 1
),则应使用 sparse categorical cross-entropy
反而。 Sparse categorical cross-entropy
采用一个整数作为每个样本的标签,并假设有 0
中的类别到它看到的最高值整数。因此它可以与您已有的完美配合。
关于javascript - ML5 : Error: You are passing a target array of shape 11342, 1,同时使用损失 'categorical_crossentropy' 。 'categorical_crossentropy' 预期目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198845/
我是一名优秀的程序员,十分优秀!