我正在尝试使用 ml5js 创建一个涂鸦识别神经网络。 使用Google's Quick, Draw Data Set训练我的神经网络。
这是我第一次尝试做任何机器学习,所以我对此是新手。
本质上,我希望用户在 Canvas 上绘制/草绘一些东西,按下猜测按钮,然后神经网络猜测他们画了什么。 例如他们画了一辆自行车,按下猜测,神经网络猜测这幅画是一辆自行车。
首先,我下载了 cat doodles 的数据来自 Google 的数据集。
具体来说,我想要:
- 加载我的大量猫图画。 (这些来自本地 .ndjson 文件)
let unformattedFile;
let jsonFormattedFile = {
"data": [
]
};
for (let i = 0; i < 1000; i++) { //hard code 1000
jsonFormattedFile["data"].push(
{ "xs": { "drawing": unformattedFile[i].drawing }, "ys": { "word": unformattedFile[i].word } }
)
}
- 教会我的神经网络这些猫画的样子(提供画作输入的笔画)。
neuralNetwork = ml5.neuralNetwork(options);
//Start to add Data to the NN
for (let x = 0; x < jsonFormattedFile.data.length; x++) {
let inputs = {
xs: jsonFormattedFile.data[x].xs
}
let target = {
ys: jsonFormattedFile.data[x].ys
}
neuralNetwork.data.addData(inputs, target);
}
neuralNetwork.data.normalize();
function whileTraining(epoch, loss) {
console.log(`epoch: ${epoch}, loss:${loss}`);
}
function doneTraining() {
makeClassification();
}
neuralNetwork.train(whileTraining, doneTraining);
- 使用猫涂鸦测试神经网络并确保其正常工作。
newTest = jsonFormattedFile.data[0].xs;
neuralNetwork.classify([newTest], (err, results) => {
console.log(results);
if (err) {
console.error(err)
}
});
我在调试时发现的问题是 whileTraining() 从不执行任何操作...它不会向控制台打印任何内容,我认为这导致我的神经网络无法训练。
这导致我收到错误: ...
TypeError: Cannot read property 'predict' of null
...当我在步骤 3 中要求神经网络对我的测试涂鸦进行分类时。
我正在寻求有关如何正确训练我的神经网络的帮助。我发现机器学习入门非常困难:(
最佳答案
我检查了 ML5 存储库,发现当您为 NeuralNetwork 选项设置 debug: true
时,永远不会调用 whileTraining
。这很奇怪,但这就是为什么 whileTraining
没有被调用的原因。
关于javascript - 为什么我的神经网络训练方法没有被调用? (ML5.JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60239039/