Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于大脑的训练流,js?_Javascript_Brain.js - Fatal编程技术网

Javascript 关于大脑的训练流,js?

Javascript 关于大脑的训练流,js?,javascript,brain.js,Javascript,Brain.js,我正在使用brain.js作为discord机器人,但我遇到了一个严重的问题。完整的培训使用了我100%的线程(因为我使用的是Javascript),即使异步执行,也会停止我的所有bot。我在brain.js文档中读到了一个名为TrainingStream的东西(底部的示例),但我没有找到解决方案 完美的解决方案是能够将训练数据添加到原始训练中(当应用程序启动时训练大脑)。比如,如果我有一些关于记忆的数据,就可以在记忆中添加更多的训练,而不必重新训练所有的机器人 谢谢 const brain =

我正在使用brain.js作为discord机器人,但我遇到了一个严重的问题。完整的培训使用了我100%的线程(因为我使用的是Javascript),即使异步执行,也会停止我的所有bot。我在brain.js文档中读到了一个名为TrainingStream的东西(底部的示例),但我没有找到解决方案

完美的解决方案是能够将训练数据添加到原始训练中(当应用程序启动时训练大脑)。比如,如果我有一些关于记忆的数据,就可以在记忆中添加更多的训练,而不必重新训练所有的机器人

谢谢

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

const net = new brain.NeuralNetwork();
const xor = [
  { input: [0, 0], output: [0] },
  { input: [0, 1], output: [1] },
  { input: [1, 0], output: [1] },
  { input: [1, 1], output: [0] },
];

function readInputs(stream, data) {
  for (let i = 0; i < data.length; i++) {
    stream.write(data[i]);
  }
  // let it know we've reached the end of the inputs
  stream.endInputs();
}

const trainingStream = new brain.TrainStream({
  neuralNetwork: net,
  /**
   * Write training data to the stream. Called on each training iteration.
   */
  floodCallback: function () {
    readInputs(trainingStream, xor);
  },

  /**
   * Called when the network is done training.
   */
  doneTrainingCallback: function (obj) {
    console.log(
      `trained in ${obj.iterations} iterations with error: ${obj.error}`
    );

    const result01 = net.run([0, 1]);
    const result00 = net.run([0, 0]);
    const result11 = net.run([1, 1]);
    const result10 = net.run([1, 0]);

    console.log('0 XOR 1: ', result01); // 0.987
    console.log('0 XOR 0: ', result00); // 0.058
    console.log('1 XOR 1: ', result11); // 0.087
    console.log('1 XOR 0: ', result10); // 0.934
  },
});

// kick it off
readInputs(trainingStream, xor);
constbrain=require('brain.js');
const net=新的brain.NeuralNetwork();
常数xor=[
{输入:[0,0],输出:[0]},
{输入:[0,1],输出:[1]},
{输入:[1,0],输出:[1]},
{输入:[1,1],输出:[0]},
];
函数读取输入(流、数据){
for(设i=0;i
出于好奇,为什么每次启动机器人时都要对其进行培训?你可以训练它一次,然后保存模型?@Kokodoko所以启动时机器人会训练并保存模型,但问题是他们可以添加新信息,新信息应该在另一次训练,所以当我想将新信息添加到机器人的内存中时,问题是,我必须再次训练完整的机器人,它使用100%的线程,因此我需要在另一个VPS(idk how)上进行该过程,或者以这种方式将更多信息放入内存,而无需再次训练完整的机器人。有时,您可以继续向已训练的模型添加数据,然后重新训练它。您不需要每次都保留原始数据并训练相同的模型。但我不确定brain.js是否允许这样做。你可以随时尝试@Kokodoko哪个库允许这样做?Brain.js允许从JSON文件加载经过训练的模型: