【问题标题】:How to Train Brain.js Neural Network in Bulk with Dynamic DataSet?如何使用动态数据集批量训练 Brain.js 神经网络?
【发布时间】:2018-08-07 18:24:28
【问题描述】:

我很难弄清楚如何使用动态数据集训练 Brain.js 神经网络。 GitHub 文档说明如下:每个训练模式都应该有一个输入和一个输出,两者都可以是从 0 到 1 的数字数组或从 0 到 1 的数字哈希

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

const output = net.run([1, 0]);  // [0.987]

问题是我事先不知道我的训练数据的输入数组中有多少元素,所以我不知道我有多少 {input: [0, 0], output: [0]} 元素需要传递给 net.train()。

例如: 如果我有以下数组而不对 {input: [0, 0], output: [0]} 元素的数量进行硬编码,我该如何训练神经网络。

var input1_array = [.1, .2, .3, .4, .5]
var input2_array = [.6, .7, .8, .9, .95]
var output1_array = [.2, .6, .8, .85, .95]

// the following doesn't work 
net.train([input:[input1_array, input2_array], output:[output1_array]]);

【问题讨论】:

    标签: javascript arrays node.js dynamic brain.js


    【解决方案1】:

    我希望问题仍然有效。

    首先,我将从空白数组(即input1_array=[];)开始,但你不能这样做,因为在火车上你需要有一些价值。因此,您可以放置​​一些初始数据,例如 var input1_array = [0]; 如果您的网络有两个输入,那么 var input1_array = [0,0];

    如果您将使用两个或更多以前的值作为输入,您将需要

    var trainingdata= [{input: [0, 0], output: [0]},
               {input: [0, 1], output: [1]},
    ] //(sorry for typos, but idea to have two entries)
    

    现在你有一些初始零,没有 NULL 给你 NN。 我在测试期间使用了提示,输入做了以下 trainingdata.push (input:[prompt("Enter next in value")],output:[prompt("Enter next out value")])

    根据您对网络的用途,您可能需要在每次出现新值时重新训练它(例如使用 LSTM 进行时间序列预测)或仅收集数据(NN 类型)。

    在您的示例中,将提示替换为来自页面 (getElementById) 或某些服务器数据 JSON 解析值之类的任何数据源。

    我发现了一个窍门。使推送到数组的函数是长度

    你可以这样做:

    if (trainingData.length < maxtrainingdata) {
      trainingData.push({input: [var1], output: [var2]});
    }
    else {
      trainingData.shift();
      trainingData.push({input: [var1], output: [
    }
    

    【讨论】:

      【解决方案2】:

      我对 AI 很陌生,但我的想法是让您的数据集动态化

      1. 假设您有一个人工智能需要学习如何正确回答一些问题
      2. 一开始,AI 只是随机回答他们,不知道自己在做什么。
      3. 你需要制作一些测试环境让它学习。

      有了这个我的意思是在你的 AI 中创建一段代码,它知道哪些答案是正确的,每次它正确地将结果推送到动态数据集。

      让我再举一个例子。

      1. 如果您正在训练一些 AI 逃离房间。
      2. 当它转义时,您需要编写一段代码,将这些结果推送到数据集,以便它可以学习最好的方法。


      你明白了吗?


      显然这个操作非常昂贵。

      如果你想不断地训练它,你需要一些真正强大的处理能力。

      解决此问题的最佳方法是保存迭代。

      想象一下,每 100 个结果您重新启动并重新训练,这将有所帮助。或者,如果您不需要主动训练它,您可以将数据保存到一个文件中,每次 AI 重启时都可以重新训练。

      您的 AI 会每次重启时变得更智能 ?

      【讨论】:

        猜你喜欢
        • 2018-11-26
        • 2019-03-18
        • 2020-09-10
        • 2012-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-07
        相关资源
        最近更新 更多