【问题标题】:Training brain.js multiple times?多次训练brain.js?
【发布时间】:2018-12-20 02:01:09
【问题描述】:

如何在第一次训练后将新信息(仅新信息,而不是所有内容,因为这会花费太多性能)训练到我用 Brain.js 制作的神经网络?

【问题讨论】:

  • 我假设你会用toJSON保存网络,然后用fromJSON加载,然后在加载后调用train。附言。没用过brain.js,但我认为应该这样做。
  • 试过了,但似乎不起作用。神经网络会因此丢失之前的信息。

标签: javascript node.js brain.js


【解决方案1】:

它有点粗糙,但你可以使用这个结构来实现:

如果我们加入 2 个训练数据集,旧的和新的,然后用 keepNetworkIntact: true 重新训练,那么我们的 NN 将比从头开始重新训练快得多。

let net = new brain.NeuralNetwork();

// pre-training
net.train([
    {input: [0, 0], output: [0]},
    {input: [1, 1], output: [0]}
 ]);

// resume training with new data set
net.train([
        {input: [0, 0], output: [0]},  // old training data set
        {input: [1, 1], output: [0]}
    ].concat([
        {input: [0, 1], output: [1]},  // joining new training data set
        {input: [1, 0], output: [1]},
    ],
    {keepNetworkIntact:true}
);

我知道 Brain.JS 即将推出一个名为 resumeableTraining 的功能,我不确定它是否已实现。不过,它值得检查文档。

脑洞大开!!!

【讨论】:

  • 这解决了这个问题,但我注意到了一点:如果我使用浏览器版本,安装 gpu.js 并不能加快训练速度。为什么?
  • Brain.js 内部依赖于 gpu.js。你是说你只是在浏览器上尝试没有节点的 gpu.js,而brain.js 训练速度不够快吗?
  • 如果我的解决方案有帮助,如果您能接受作为答案,将不胜感激。谢谢
  • 是的,无论有没有 gpu.js,性能都是一样的:训练少量信息大约需要 3~5 秒,迭代 250 次。
  • 请注意,Brain.JS 内部已经使用了 gpu.js。如果您选择将它们拼接在一起,您可能需要探索 BrainJS 代码库以更好地了解它的内部连接方式,以便您可以根据自己的规范自定义实现。
猜你喜欢
  • 2019-09-07
  • 2018-11-26
  • 2013-10-23
  • 2020-07-17
  • 2019-03-18
  • 2019-07-15
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多