Thanks for those references.
For some reason, when I manually wrote the RNN using as the char_rnn_classification tutorial showed (defining an input & hidden layer, concatenating them, then defining an input2output and an input2hidden layer), things worked pretty well actually.  It’s when I decided to switch over to the nn.RNN() module that things started to get quite confusing, and the results degraded significantly.  It’s a little unclear to me why that is at the moment.