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