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----"); }
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); }