public void Generate() { var m = Rows(dx); var n = Cols(dx); var idx = 0; for (var i = 0; i < m; i++) { if (Math.Abs(alpha[i]) > 0) { idx++; } } ManagedOps.Free(ModelX, ModelY, Alpha, W, KernelParam); ModelX = new ManagedArray(Cols(dx), idx); ModelY = new ManagedArray(1, idx); Alpha = new ManagedArray(1, idx); KernelParam = new ManagedArray(kparam); var ii = 0; for (var i = 0; i < m; i++) { if (Math.Abs(alpha[i]) > 0) { for (int j = 0; j < n; j++) { ModelX[j, ii] = dx[j, i]; } ModelY[ii] = dy[i]; Alpha[ii] = alpha[i]; ii++; } } B = b; Passes = Iterations; ManagedOps.Copy2D(KernelParam, kparam, 0, 0); Type = ktype; var axy = ManagedMatrix.BSXMUL(alpha, dy); var tay = ManagedMatrix.Transpose(axy); var txx = ManagedMatrix.Multiply(tay, dx); W = ManagedMatrix.Transpose(txx); Trained = true; ManagedOps.Free(dx, dy, K, kparam, E, alpha, axy, tay, txx); }