anchor.diff:  
   let text = "A merry little surge of electricity piped by automatic alarm from the mood organ beside his bed awakened Rick Deckard."
   
  -type TextTokenizer(?sampleText) = 
  -    let sampleText = defaultArg sampleText """0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;?@[\\]^_`{|}~ """
  -    let chars = sampleText |> Seq.distinct |> Seq.toArray
  +type TextTokenizer(?example) = 
  +    let example = defaultArg example """0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;?@[\\]^_`{|}~ """
  +    let chars = example |> Seq.distinct |> Seq.toArray
       member _.length = chars.Length
       member _.charToIndex(c) =
           let i = 
  
positive.code: 
  
  let seqLen = 32
  let tok = TextTokenizer()
  let dataset = tok.dataset(text, seqLen)
  let loader = dataset.loader(batchSize=4)
  
  let rnn = RNN(tok.length, tok.length, numLayers=3, batchFirst=true)
  print rnn
  let optimizer = Adam(rnn, lr=dsharp.tensor(0.0005))
  
  let epochs = 15
  let start = System.DateTime.Now
  
negative.code:     for i, x, t in loader.epoch() do
          let input =  x.[*,..seqLen-2]
          let target = t.[*,1..]
          rnn.reset()
          net.reverseDiff()
          let output = input --> net
          let loss = dsharp.crossEntropyLoss(output.view([-1;tok.length]), target.view(-1))
          loss.reverse()
          optimizer.step()
          print loss
  
  rnn.reset()
  let mutable c = "a"
  for i in 0..15 do
      print c
      c <- c |> tok.textToTensor |> dsharp.unsqueeze(1) |> net.forward |> dsharp.squeeze(1) |> tok.tensorToText
  