brain.js倒数/反向训练(预测输出输入)

时间:2018-06-18 07:34:06

标签: javascript machine-learning ecmascript-6 neural-network brain.js

我刚刚学会训练brain.js network并且正在玩它。然后我很想知道是否有可能反过来 - 预测输出的输入?

这是我的代码

C1 C2
1  (null)

但是如果我愿意的话 const brain = require('brain.js'); const network = new brain.NeuralNetwork(); /* network.train([ { input: { doseA: 0 }, output: { indicatorA: 0 } }, { input: { doseA: 0.1 }, output: { indicatorA: 0.02 } }, { input: { doseA: 0.2 }, output: { indicatorA: 0.04 } }, { input: { doseA: 0.3 }, output: { indicatorA: 0.06 } }, { input: { doseA: 0.4 }, output: { indicatorA: 0.08 } }, { input: { doseA: 0.5 }, output: { indicatorA: 0.10 } }, { input: { doseA: 0.6 }, output: { indicatorA: 0.12 } }, { input: { doseA: 0.7 }, output: { indicatorA: 0.14 } }, ], { iterations: 1e6, errorThresh: 0.00001 }); */ network.fromJSON({"sizes":[1,3,1],"layers":[{"doseA":{}},{"0":{"bias":-0.7720749378204346,"weights":{"doseA":-6.819720268249512}},"1":{"bias":0.2317514568567276,"weights":{"doseA":-1.4340121746063232}},"2":{"bias":-0.34450986981391907,"weights":{"doseA":-2.9449453353881836}}},{"indicatorA":{"bias":-1.0124520063400269,"weights":{"0":-5.02399206161499,"1":-1.69333016872406,"2":-3.1710503101348877}}}],"outputLookup":true,"inputLookup":true,"activation":"sigmoid","trainOpts":{"iterations":1000000,"errorThresh":0.00001,"log":false,"logPeriod":10,"learningRate":0.3,"momentum":0.1,"callbackPeriod":10}}) const result = network.run({ doseA: 0.35 }); console.log(result); // { indicatorA: 0.06978786736726761 } 并获得network.run({ indicatorA: 0.07 })

我是否被迫再次训练{ doseA: 0.35 },但已切换networkinput?或者有办法扭转它吗?

1 个答案:

答案 0 :(得分:1)

绝对有一个实用程序可以执行此操作:https://github.com/BrainJS/brain.retro.js

如果有更多的兴趣,我还可以使用查询实用程序,它使您可以执行一些非常有趣的mongo样式查询:https://github.com/BrainJS/brain.retro.js/blob/master/query.js