Wire up temperature-based sampling for poet text generation
Greedy argmax decoding in RbmListener::forward always produces the exact same character sequence and quickly falls into short repeating loops once the 5-character lookback state revisits a prior cycle. Add an optional temperature argument (poet f <seed> [temperature]) that switches decoding to RnnStack::sample_one_hot, which now does proper categorical sampling (temperature-scaled, renormalized draw) instead of the old per-code Bernoulli approach that could leave the result as a non-one-hot probability vector. Also seed Armadillo's RNG in main(), since it otherwise defaults to a fixed seed and every run would sample identically. Add docs/RNN_ARCHITECTURE.md documenting how the RnnStack/Layer stack implements the RNN (context chaining across layers, training/generation data flow, and the decoding behavior above). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016K8Gu7Qejd11JbdiHZqYAs
This commit is contained in:
+1
-1
@@ -34,7 +34,7 @@ public:
|
||||
arma::mat vc_to_v(const arma::mat &vc, size_t numContext) const;
|
||||
arma::mat step_forward(arma::mat &state, const arma::mat &v);
|
||||
|
||||
void sample_one_hot(arma::mat &srcDst);
|
||||
void sample_one_hot(arma::mat &srcDst, double temperature=1.0);
|
||||
void clamp_one_hot(arma::mat &srcDst);
|
||||
arma::mat to_next(const arma::mat &v);
|
||||
arma::mat to_curr(const arma::mat &v);
|
||||
|
||||
Reference in New Issue
Block a user