Sentdex / NNfSiX

Neural Networks from Scratch in various programming languages
https://nnfs.io
MIT License
1.44k stars 375 forks source link

p006-Softmax-Activation in Javascript #171

Open fisher2470 opened 2 years ago

fisher2470 commented 2 years ago

Resolves an error on p005 and includes the JavaScript solution for p006

D4veDev commented 2 years ago

The "p006-Softmax-Activation in Javascript.js" implementation has a major problem in the Softmax class implementation. Instead of calculation "batch-by-batch", it just combines all values in a single array and calculates the percentage in this single array.

This is not the intended purpose of this class, and I suggest changing it to my implementation:

class Activation_Softmax {
    constructor () {}

    forward (inputs) {
        var exp_values = math.matrix(inputs._data.map(batch => batch.map(i => math.exp(i - math.max(batch)))));
        var probabilities = math.matrix(exp_values._data.map(batch => batch.map(i => i / math.sum(batch))));
        this.output = probabilities;
    }
}

Furthermore, it is advisable to only display the first 5 batches, as this is what the YouTube series does too.

console.log(activation2.output._data.slice(0,5));

The only issue I have is that all calculations assume a predefined matrix shape, which is 3 by whatever.