
The function at https://github.com/BrainJS/brain.js/blob/master/src/recurrent/rnn.js#L211 behaves strangely.. the input is correct (an array of numbers) but it outputs NaN, which in turn causes the chain of functions to fail and my network doesn't train.
I investigated this further, and it turns out that the equation.predictTargetIndex(source, target) will go for a bit, then spit out NaN, causing the rest of the chain to be NaN.
Dude I don't even know. It happens when I try to train an LSTM network o.o
const messages = [ { input: 'string of words to check, essentially', output: 1 } ]
const brain = new brainjs.recurrent.LSTM({ hiddenLayers: [20, 20, 20] });
brain.train(messages, {
iterations: 20000,
errorThresh: 0.001,
log: true,
logPeriod: 10,
learningRate: 0.3,
momentum: 0.1,
callback: null,
callbackPeriod: 10,
timeout: Infinity,
});
4, mainly because this is the example provided in the README. It seems no matter what settings I adjust, the same issue arises.
The network.. trains. No errors are thrown.
Here's what I got from adding a bunch of console.logs:

System info: KDE Neon 5.18, node 12.16.2, brain.js v2.0.0-alpha.12
This thing is so inconsistent it amazes me.
[
{
input: 'somebody once told me the world was gonna roll me',
output: 0
}
]
works, but
[
{
input: '<vulgar phrases here>',
output: 1
}
]
doesnt.
Hi there! Any news? This isn't urgent, just something I'd like to be able to use :)
I'll take a look today. Sorry, been swamped.
The problem is that you are using a number, and should be using a string:
output: 1 should be output: '1'
However, I'm adding a fix that will automatically convert this for you.
Ha! Was that it? How stupid of me. Thanks for the fix!
Also, your net is three LSTM layers, which seems pretty deep. Two would likely be plenty, from my naive perspective.
Most helpful comment
The problem is that you are using a number, and should be using a string:
output: 1should beoutput: '1'However, I'm adding a fix that will automatically convert this for you.