Beispiel #1
0
        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);
        }