javascript - 为什么我的神经网络训练方法没有被调用? (ML5.JS)

标签 javascript tensorflow machine-learning neural-network tensorflow.js

我正在尝试使用 ml5js 创建一个涂鸦识别神经网络。 使用Google's Quick, Draw Data Set训练我的神经网络。

这是我第一次尝试做任何机器学习,所以我对此是新手。

本质上,我希望用户在 Canvas 上绘制/草绘一些东西,按下猜测按钮,然后神经网络猜测他们画了什么。 例如他们画了一辆自行车,按下猜测,神经网络猜测这幅画是一辆自行车。

首先,我下载了 cat doodles 的数据来自 Google 的数据集。

具体来说,我想要:

  1. 加载我的大量猫图画。 (这些来自本地 .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/

    相关文章:

    Tensorflow RNN 权重矩阵初始化

    javascript - 如何在 Atom 编辑器中查找引用(或用法)?

    python - SparseTensor 与 tf.sparse_matmul 的矩阵乘法失败

    javascript - 由于本地存储代理,Extjs 网格面板最多显示 25 行。如何改变这个极限值呢?

    python - 将 .pb 文件转换为 .ckpt (tensorflow)

    python - 是否有可能检索由混淆矩阵识别的误报/漏报?

    machine-learning - 大数据的引导采样

    image-processing - 使用 Keras 深度学习进行层计数

    javascript - html onclick 打开的窗口在ajax 上不起作用

    javascript - Laravel Mix 公共(public) block 和 vendor block