Пример #1
0
        /// <summary>
        /// Pick an array element with probability proportional to exp(-cost).
        /// </summary>
        public static int sample_by_costs(Floatarray costs)
        {
            Doublearray p = new Doublearray();

            p.Copy(costs);
            double mincost = NarrayUtil.Min(costs);

            p -= mincost;

            for (int i = 0; i < p.Length(); i++)
            {
                p.UnsafePut1d(i, Math.Exp(-p.UnsafeAt1d(i)));
            }
            double sump = NarrayUtil.Sum(p);

            p /= sump;

            double choice = rnd.NextDouble();
            double s      = 0;

            for (int i = 0; i < p.Length(); i++)
            {
                s += p[i];
                if (choice < s)
                {
                    return(i);
                }
            }

            // shouldn't happen...
            return(costs.Length() - 1);
        }
Пример #2
0
        public override void Save(BinaryWriter writer)
        {
            if (lenetWrap.IsEmpty)
            {
                BinIO.string_write(writer, "<null/>");
                return;
            }

            double[] dbuffer;
            int      size;

            // receive buffer from wrapped lenet
            lenetWrap.SaveNetworkToBuffer(out size, out dbuffer);
            lenetparam.Resize(size);
            for (int i = 0; i < size; i++)
            {
                lenetparam.UnsafePut1d(i, dbuffer[i]);
            }

            BinIO.string_write(writer, "<object>");
            //BinIO.string_write(writer, comp.Name);

            // write lenet arguments
            BinIO.scalar_write(writer, lenetWrap.Classes.Length);
            for (int i = 0; i < lenetWrap.Classes.Length; i++)
            {
                BinIO.scalar_write(writer, lenetWrap.Classes[i]);
            }
            BinIO.scalar_write(writer, Convert.ToByte(lenetWrap.TanhSigmoid));
            BinIO.scalar_write(writer, Convert.ToByte(lenetWrap.NetNorm));
            BinIO.scalar_write(writer, Convert.ToByte(lenetWrap.AsciiTarget));

            // save Narray to stream
            BinIO.narray_write(writer, lenetparam);

            BinIO.string_write(writer, "</object>");
        }
Пример #3
0
        /// <summary>
        /// Pick an array element with probability proportional to exp(-cost).
        /// </summary>
        public static int sample_by_costs(Floatarray costs)
        {
            Doublearray p = new Doublearray();
            p.Copy(costs);
            double mincost = NarrayUtil.Min(costs);
            p -= mincost;

            for (int i = 0; i < p.Length(); i++)
                p.UnsafePut1d(i, Math.Exp(-p.UnsafeAt1d(i)));
            double sump = NarrayUtil.Sum(p);
            p /= sump;

            double choice = rnd.NextDouble();
            double s = 0;
            for (int i = 0; i < p.Length(); i++)
            {
                s += p[i];
                if (choice < s)
                    return i;
            }

            // shouldn't happen...
            return costs.Length() - 1;
        }