static void ComputeGradients_AddDivAddGradients(ManagedArrayPtr inputs, ManagedArray2Ptr gradients, ManagedArray2Ptr gradientSums, ManagedArrayPtr errors, int idx, float by) { for (int x = 0; x < inputs.Size; x++) { gradients[x, idx] += inputs[x] * errors[idx]; gradients[x, idx] /= by; gradientSums[x, idx] += gradients[x, idx]; } }
static void ComputeGradients_SetAndAddGradients(ManagedArrayPtr inputs, ManagedArray2Ptr gradients, ManagedArray2Ptr gradientSums, ManagedArrayPtr errors, int idx) { for (int x = 0; x < inputs.Size; x++) { var v = inputs[x] * errors[idx]; gradients[x, idx] = v; gradientSums[x, idx] += v; } }
static float ComputeErrors_LowerErrorSum(ManagedArrayPtr lowerErrors, ManagedArray2Ptr lowerWeights, int idx) { float sum = 0.0f; for (int x = 0; x < lowerErrors.Size; x++) sum += lowerErrors[x] * lowerWeights[idx, x]; return sum; }
static void ComputeGradients_AddGradients(ManagedArrayPtr inputs, ManagedArray2Ptr gradients, ManagedArrayPtr errors, int idx) { for (int x = 0; x < inputs.Size; x++) gradients[x, idx] += inputs[x] * errors[idx]; }
static float ComputeForward_Sum(ManagedArrayPtr inputs, ManagedArray2Ptr weights, int idx) { float sum = 0.0f; for (int x = 0; x < inputs.Size; x++) sum += inputs[x] * weights[x, idx]; return sum; }