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

时间:2017-03-21 19:41:10

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

我在node.js项目中使用Brain.js。现在,每次运行程序更新内容时,训练都需要很长时间才能运行,所以我使用Github页面中提到的预期方法将网络保存在json文件中。它似乎保存得当,但当我尝试加载它时说 "的 node_modules /脑/ 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]

1 个答案:

答案 0 :(得分:3)

我认为您需要将要写入的数据的字符串传递给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'));

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