Esempio n. 1
0
        private static void Sample(FloatArray hprev, FloatArray cprev, int seed_ix, int size)
        {
            var x = new FloatArray(vocab_size);

            x[seed_ix] = 1;

            var ixes = new List <int>();

            for (int t = 0; t < size; t++)
            {
                var data = net.FeedForward(x, hprev, cprev);

                var ix = NumMath.Choice(Enumerable.Range(0, vocab_size).ToArray(), 1, data.y.ToArray()).First();

                x = new FloatArray(vocab_size)
                {
                    [ix] = 1
                };
                ixes.Add(ix);

                hprev = data.h;
                cprev = data.c;
            }

            var str = string.Join("", ixes.Select(c => ix_to_char[c]));

            Console.WriteLine($"----\n {str} \n----");
        }
Esempio n. 2
0
        private static void Sample(Array <FloatArray> hprev, int seed_ix, int size)
        {
            var x = new FloatArray(vocab_size);

            x[seed_ix] = 1;

            var ixes = new List <int>();

            for (int t = 0; t < size; t++)
            {
                var data = net.Output(x, hprev);

                var ix = NumMath.Choice(Enumerable.Range(0, vocab_size).ToArray(), 1, data.ps.ToArray()).First();

                x = new FloatArray(vocab_size)
                {
                    [ix] = 1
                };
                ixes.Add(ix);

                hprev = data.hs;
            }

            Write($"----\n { ixes.Select( c => ix_to_char[c] ).Join("") } \n----");
        }
        public static int GetBestPosition(FloatArray result, bool prob)
        {
            if (prob)
            {
                var p = NumMath.Choice(Enumerable.Range(0, result.Length).ToArray(), 1, result.ToArray()).First();
                return(p);
            }

            var max = 0f;
            var pos = 0;

            for (var i = 0; i < result.Length; i++)
            {
                if (max < result[i])
                {
                    max = result[i];
                    pos = i;
                }
            }

            return(pos);
        }