public double[] Forward(List <Comparison> vals, StonkContext ctxt, StonkMem sm)
 {
     Parallel.For(0, vals.Count(), j =>
     {
         sm.LocationOutputs[j].Add(vals[j].Values.Duplicate());
         for (int i = 0; i < Network.Layers.Count(); i++)
         {
             sm.LocationOutputs[j].Add(Network.Layers[i].Output(sm.LocationOutputs[j].Last()));
         }
         ctxt.Contextualize(vals[j], j, sm);
     });
     return(sm.Multiply());
 }
        public double[] Forward(List <Comparison> vals, StonkContext context)
        {
            double[] ctxt = new double[vals.Count()];
            double[,] loc = new double[vals.Count(), MktSize];

            Parallel.For(0, vals.Count(), j =>
            {
                double[] a = vals[j].Values.Duplicate();
                for (int i = 0; i < Network.Layers.Count(); i++)
                {
                    a = Network.Layers[i].Output(a);
                }
                loc.SetRank(a, j);
                ctxt[j] = context.Contextualize(vals[j]);
            });

            return(loc.Multiply(Activations.SoftMax(ctxt)));
        }