This question is regarding Softmax’s derivatives.
I looked around for SoftMax function and found this useful language agnostic resource:
Which Translates to C/C++ nicely.
void TransformToSoftMax(DoubleListType &inputs, DoubleListType &outputs, int NumberOfNeurons)
{
double sum = 0.0;
double maxvalue;
maxvalue = inputs[0];
for (int i = 0; i < NumberOfNeurons; i++)
maxvalue = max(inputs[i], maxvalue);
for (int i = 0; i < NumberOfNeurons; i++)
sum += exp(inputs[i])
for (int i = 0; i < NumberOfNeurons; i++)
outputs[i] = exp(inputs[i] - maxvalue) / sum;
}
Unfortunately, I don't have the derivative. The source didn’t make one up for its derivative. I’m finding some screwy results internet search, like this from SIMD Library documentation online. I know it has to be wrong.
I found many examples, Thick in Python code, mentioning, vectors, matrix with almost NO mention of the “Network or Neurons itself”, almost requiring a person to learn Python and write the code as the responder had to see things like “what was passed” to the example and why.
Is it even possible to explain the derivative in clear steps with just the mention of Neurons, Layer, network (Like the pictured description of applying SoftMax) or are matrices, vectors, “np”(s) the only way to describe it? If so, please give a quick "This is what you have to do".