因此,我在js中使用ml5编写了一个简单的NeuralNetwork,它将由图像训练,使用p5 js库将图像放入数组,然后通过ml5对它们进行训练,但我遇到了一个主要问题,我花了几个小时寻找这个错误的答案,但在任何地方都找不到答案。使用库p5,p5.声音,草图,ml5
Js文件
let RustImage = [];
function preload() {
for (let i = 0; i < 5; i++) {
RustImage[i] = loadImage(`RustPhotos/2020-12-08 (${i+7}).png`);
}
}
let NodeClassifier;
function setup() {
createCanvas(440, 440);
// background(0);
// image(RustImage[0], 0, 0, width, height);
let options = {
inputs: [128, 128, 4],
task: "imageClassification",
debug: true,
};
NodeClassifier = ml5.neuralNetwork(options);
for (let i = 0; i < RustImage.length; i++) {
NodeClassifier.addData({ image: RustImage[i] }, { label: "SulfurNode" });
}
NodeClassifier.normalizeData();
NodeClassifier.train({ epochs: 5 }, finishedTraining);
}
function finishedTraining() {
console.log("Finished Training!");
}<!DOCTYPE html>
<html lang="en">
<head>
<title>Getting Started with ml5.js</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js"></script>
<script src="p5.js"></script>
<script src="p5.sound.js"></script>
<script src="sketch.js"></script>
<script src="https://unpkg.com/ml5@latest/dist/ml5.min.js"></script>
</head>
<body>
<script src="improring.js"></script>
</body>
</html>如果有人能帮忙,他们知道这个错误的答案或一个简单的修复,请评论。
全误差
Uncaught Error: Error in oneHot: depth must be >=2, but it is 1
node_modules/@tensorflow/tfjs-core/dist/tf-core.esm.js:17
oneHot_ @ c:\Users\mattd\Desktop\Xamp\htdocs\Js Importing Lib\node_modules\@tensorflow\tfjs-core\dist\tf-core.esm.js:17:357944
oneHot @ c:\Users\mattd\Desktop\Xamp\htdocs\Js Importing Lib\node_modules\@tensorflow\tfjs-core\dist\tf-core.esm.js:17:71801
◀ load ▶
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:65707:28
◀ Promise.then ▶
_main.default.loadImage @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:65671:30
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:48748:67
preload @ C:\Users\mattd\Desktop\Xamp\htdocs\Js Importing Lib\improring.js:5:24
_start @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:48706:19
p5 @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:49057:22
_globalInit @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:48197:17
◀ Promise.then ▶
51.../core/main @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:48222:71
o @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:34:19
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:38:22
38../color/color_conversion @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:41211:11
o @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:34:19
r @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:51:9
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:55:7
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:18:12
<anonymous> @ cdn.jsdelivr.net/npm/p5@1.1.9/lib/p5.js:20:3发布于 2021-07-13 22:35:47
不确定它是否相同,但在我的例子中,有些培训数据集只有一个输出标签的结果,因此模型不会进行训练。
它似乎在某种程度上与“深度必须是>=2,但它是1”消息匹配。
要确定的是,我只需在dataset中手动添加另一个结果并重新启动
https://stackoverflow.com/questions/65210563
复制相似问题