FeedForward(FloatArray x, FloatArray hprev, FloatArray cprev) { var z = new FloatArray(JoinArray(hprev.ToArray(), x.ToArray())); var f = Sigmoid((z.T * Wf).SumLine() + Bf); var i = Sigmoid((z.T * Wi).SumLine() + Bi); var cbar = Tanh((z.T * Wc).SumLine() + Bc); var o = Sigmoid((z.T * Wo).SumLine() + Bo); var c = f * cprev + i * cbar; var h = o * Tanh(c); return(z, f, i, cbar, c, o, h); }
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); }