gpt4 book ai didi

javascript - ML5 : Error: You are passing a target array of shape 11342, 1,同时使用损失 'categorical_crossentropy' 。 'categorical_crossentropy' 预期目标

转载 作者:行者123 更新时间:2023-12-02 21:48:08 25 4
gpt4 key购买 nike

我正在尝试使用 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 ,和DwightMichaelJim有工作,Dwight没有。假设没有工作将您归为 0 类别,并且拥有一个将使您进入类别 1 。在这种情况下,标签将如下所示:

[[0,1],    # Michael's label
[0,1], # Jim's label
[1,0]] # Dwight's label

MichaelJim属于类别1 ,所以他们有 1在索引1和一个 0在所有其他指数中。 Dwight属于类别 0 ,所以他有 1在索引0和一个 0所有其他指数。

如果您想使用单个数字作为标签(即 01 ),则应使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com