【问题标题】:brain.js problem with importing LSTM network from json从json导入LSTM网络的brain.js问题
【发布时间】:2021-02-15 23:48:42
【问题描述】:

我制作了一个 Brain.js LSTM 网络,用于预测加法。然后我使用net.toJSON() 将它保存到一个 .json 文件中 但是,它似乎不起作用。 traindata.json 已成功创建,没有错误。但是,我收到一个错误:

/home/runner/AngryBlaringTelevision/node_modules/brain.js/dist/brain.js:18102
      var matrix = new Matrix(json.rows, json.columns);
                                   ^

TypeError: Cannot read property 'rows' of undefined
    at Function.fromJSON (/home/runner/AngryBlaringTelevision/node_modules/brain.js/dist/brain.js:18102:36)
    at LSTM.fromJSON (/home/runner/AngryBlaringTelevision/node_modules/brain.js/dist/brain.js:20142:26)
    at /home/runner/AngryBlaringTelevision/index.js:9:7
    at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:63:3)

我的代码:

const brain = require('brain.js');
const fs = require('fs');

const LSTM = brain.recurrent.LSTM;
const net = new LSTM();

fs.readFile('traindata.json', function(err, data) {
  if (err) throw err;
  net.fromJSON(data);
  console.log("file loaded");
});

另外,这是我在 pastebin 上的 traindata.json 文件的链接: https://pastebin.com/tBZyxq1R 我不知道如何解决这个错误。好像是 Brain.js 的错误。

导入文件后我也试过net.run(),但还是不行。

【问题讨论】:

  • 查看您的训练数据后,看起来行/列是名为“输入”的对象中的属性。您是否可能需要传递 json.input.rows 而不仅仅是 json.rows?
  • 我明白你的意思...但是我认为这是 Brain.js 的一个问题,所以我会在 Brain.js 的 github 上提出一个问题。

标签: brain.js


【解决方案1】:

我认为可能发生的情况是,您传递给 BrainJS 的内容实际上并不是 JSON。

在你的代码中,你有这个:

fs.readFile('traindata.json', function(err, data) {
  if (err) throw err;
  net.fromJSON(data);
  console.log("file loaded");
});

当我尝试运行您的代码时,我看到了与您看到的相同的错误。 使用JSON.parse() 似乎可以解决问题。

也就是说,当我把net.fromJSON(data);改成net.fromJSON(JSON.parse(data));时,错误就消失了。

【讨论】:

  • 同意。 JSON.parse() 是要走的路
猜你喜欢
  • 1970-01-01
  • 2017-08-13
  • 2022-08-15
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 2018-11-26
相关资源
最近更新 更多