Example #1
0
        public (FloatArray errorL, FloatArray errorR, FloatArray errorC, FloatArray2D dws, FloatArray2D dwhp, FloatArray2D dwhc, FloatArray2D dwpl, FloatArray2D dwpr, FloatArray2D dwc, FloatArray dbh, FloatArray dbc, FloatArray dbp) ComputeErrorNBackWard(FloatArray s, FloatArray p, FloatArray c, FloatArray h, FloatArray pl, FloatArray pr, FloatArray cx, FloatArray targetScore)
        {
            var ce = s - targetScore;

            var des  = ActivationFunctions.Dsigmoid(s) * ce;
            var bkpS = (des * wS).SumColumn();

            var deh   = ActivationFunctions.Dtanh(h) * bkpS;
            var bkpHp = (deh * wHP).SumColumn();
            var bkpHc = (deh * wHC).SumColumn();

            var dep   = ActivationFunctions.Dtanh(p) * bkpHp;
            var bkpPl = (dep * wpl).SumColumn();
            var bkpPr = (dep * wpr).SumColumn();

            var dec  = ActivationFunctions.Dtanh(c) * bkpHc;
            var bkpC = (dec * wC).SumColumn();

            var dws  = (h.T * des);
            var dwhp = (p.T * deh);
            var dwhc = (c.T * deh);
            var dwpl = (pl.T * dep);
            var dwpr = (pr.T * dep);
            var dwc  = (cx.T * dec);

            return(bkpPl, bkpPr, bkpC, dws, dwhp, dwhc, dwpl, dwpr, dwc, deh, dec, dep);
        }
        public (FloatArray p, FloatArray s, FloatArray x) FeedForward(FloatArray c1, FloatArray c2)
        {
            var x = c1.Union(c2);

            var p = ActivationFunctions.Tanh(((x.T * w).SumLine() + b));
            var s = ActivationFunctions.Sigmoid((p.T * wScore).SumLine());

            return(p, s, x);
        }
        public (FloatArray errorL, FloatArray errorR, FloatArray errorDeep, FloatArray2D dwpl, FloatArray2D dwpr, FloatArray2D dwdeep, FloatArray db) BackWard(FloatArray p, FloatArray pl, FloatArray pr, FloatArray pprev, FloatArray ep)
        {
            var dep      = ActivationFunctions.Dtanh(p) * ep;
            var bkp_pl   = (dep * wpl).SumColumn();
            var bkp_pr   = (dep * wpr).SumColumn();
            var bkp_deep = (dep * wDeep).SumColumn();

            var dwpl   = (pl.T * dep);
            var dwpr   = (pr.T * dep);
            var dwdeep = (pprev.T * dep);

            return(bkp_pl, bkp_pr, bkp_deep, dwpl, dwpr, dwdeep, dep);
        }
Example #4
0
        public (FloatArray errorL, FloatArray errorR, FloatArray errorC, FloatArray2D dwpl, FloatArray2D dwpr, FloatArray2D dwc, FloatArray dbc, FloatArray dbp) BackWard(FloatArray p, FloatArray c, FloatArray pl, FloatArray pr, FloatArray cx, FloatArray ep, FloatArray ec)
        {
            var dep   = ActivationFunctions.Dtanh(p) * ep;
            var bkpPl = (dep * wpl).SumColumn();
            var bkpPr = (dep * wpr).SumColumn();

            var dec  = ActivationFunctions.Dtanh(c) * ec;
            var bkpC = (dec * wC).SumColumn();

            var dwpl = (pl.T * dep);
            var dwpr = (pr.T * dep);
            var dwc  = (cx.T * dec);

            return(bkpPl, bkpPr, bkpC, dwpl, dwpr, dwc, dec, dep);
        }
Example #5
0
        public (FloatArray p, FloatArray s, FloatArray h, FloatArray c) FeedForward(FloatArray cl, FloatArray cr, FloatArray ctx)
        {
            // Node Tree Vector
            var p = ActivationFunctions.Tanh(((cl.T * wpl).SumLine() + (cr.T * wpr).SumLine() + bP));

            // Context Vector
            var c = ActivationFunctions.Tanh((ctx.T * wC).SumLine() + bC);

            // Hidden Layer
            var h = ActivationFunctions.Tanh((p.T * wHP).SumLine() + (c.T * wHC).SumLine() + bH);

            // Scoring value
            var s = ActivationFunctions.Sigmoid((h.T * wS).SumLine());

            return(p, s, h, c);
        }
        ComputeErrorNBackWard(FloatArray p, FloatArray score, FloatArray inputs, FloatArray target)
        {
            var loss = 1 * (score - target).Pow(2).Sum();

            var ce = score - target;

            var deScore = ActivationFunctions.Dsigmoid(score) * ce;
            var error   = (deScore * wScore).SumColumn();

            var de       = ActivationFunctions.Dtanh(p) * error;
            var dh       = (de * w).SumColumn();
            var backProp = dh.Split(2);

            var dwScore = (p.T * deScore);
            var dw      = (inputs.T * de);

            return(loss, backProp[0], backProp[0], dw, dwScore, de);
        public FloatArray FeedForward(FloatArray cl, FloatArray cr, FloatArray deep)
        {
            var p = ActivationFunctions.Tanh(((cl.T * wpl).SumLine() + (cr.T * wpr).SumLine() + (deep.T * wDeep).SumLine() + b));

            return(p);
        }