javascript - Brain.js - 无法从 json 文件加载网络

标签 javascript node.js machine-learning neural-network brain.js

我在 node.js 项目中使用 Brain.js。每次我运行程序更新内容时,训练现在都需要很长时间才能运行,因此我使用 Github 页面中提到的预期方法将网络保存在 json 文件中。它似乎保存正确但是当我尝试加载它时它说 “node_modules/brain/lib/neuralnetwork.js:341 var size = json.layers.length; " 我可能做错了什么,因为我没有在 Github 或这里发现这个问题,任何帮助将不胜感激。不要放置整个文件,因为其中大部分是重复代码以加载到文件中。这一切工作正常,在加载文件之前没有任何错误。如果需要更多代码,我会发布

主文件

function run(){
    console.log("training network...");
    var trainingNet0 = net0.train([
        {input: pixels0, output: [1]},
        {input: pixels1, output: [1]},
        {input: pixels2, output: [1]},
        {input: pixels3, output: [1]},
        {input: pixels6, output: [0]},
        {input: pixels7, output: [0]},
        {input: pixels8, output: [0]},
        {input: pixels9, output: [0]}],
        {
            errorThresh: 5,  // error threshold to reach
            iterations: 1000,   // maximum training iterations
            log: false,           // console.log() progress periodically
            logPeriod: 10,       // number of iterations between logging
            learningRate: 0.003    // learning rate);
    })

    console.log(net0.run(pixels4))
    console.log(net0.run(pixels5))
    console.log(net0.run(pixels6))
    console.log(net0.run(pixels3))
    saveFile();

}

function saveFile(){
    fs.writeFile("network.json", net0.toJSON(), function(err) {
        if(err)
            return console.log(err);

        console.log("The file was saved!");
        loadFile()
    });
    console.log(net0.toJSON())
}

function loadFile(){    
    fs.readFile('network.json', function (err, data) {
        if (err)
            throw err; 

        console.log(data.layers);
        net0.fromJSON(data);
        console.log("file loaded");
    });
}

正在保存的json文件的内容也是

[object Object]

最佳答案

我相信您需要为要写入 fs.writeFile 的数据传递一个字符串。所以 JSON.stringify() 你传入的数据。

function saveFile(){
    fs.writeFile("network.json", JSON.stringify(net0.toJSON()), function(err) {
        if(err)
            return console.log(err);

        console.log("The file was saved!");
        loadFile()
    });
}

别忘了,在 fs.readFile() 之后你将不得不对数据进行 JSON.parse

var obj = JSON.parse(fs.readFileSync('network.json', 'utf8'));

或者您可以使用此 Node 模块将 json 保存到文件:https://github.com/jprichardson/node-jsonfile

关于javascript - Brain.js - 无法从 json 文件加载网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42936707/

相关文章:

javascript - 如何在 HOC 组件中获取 React 路由器方法?

python - scikit-image (io.imread) 返回 float 组,这已经标准化了吗?

machine-learning - 训练神经网络的好方法

javascript - 如何根据其嵌套框调整图像大小

javascript - 打字时向数字添加逗号

php - 使用 PHP 和 Nodejs Socket.io

node.js - 从 TypeScript 中的依赖项访问类型声明

javascript - 为什么我的 browserify require 路径在 Windows 中无法解析?

image-processing - 表示用于识别的图像数据

javascript - 在 Javascript 中处理多个关键事件的最佳方式是什么?