private void AssertNetGradient(BackpropAlgorithm alg, double[][,] data, double[] expected) { var weights = alg.Net.Weights; for (int i = 0; i < weights.Length; i++) { var w = weights[i]; if (w == null) { continue; } var g = alg.Gradient[i]; for (int j = 0; j < w.Length; j++) { var prev = w[j]; var actg = g[j]; AssertDerivative(x => { w[j] = x; var loss = alg.FeedForward(data, expected); w[j] = prev; return(loss); }, prev, actg); } } }