anchor.diff:          | None ->
               printfn "No training was performed."
   
  +        // restore original dump prefix
  +        Dump.prefix <- origDumpPrefix
  +
           {
               History             = List.rev log.History
               Best                = log |> TrainingLog.best |> Option.map fst
  
positive.code:         trainable.InitOptState ()
          trainable.PrintInfo ()
  
          /// training function
          let rec doTrain iter learningRate log =
  
              if not Console.IsInputRedirected then printf "%6d \r" iter
  
              /// set dump prefix
              match cfg.DumpPrefix with
              | Some dp -> Dump.prefix <- sprintf "%s%d" dp iter
              | None -> ()
  
              // execute training
              trainable.ResetModelState ()
              let trnLosses = trnBatches |> Seq.map (trainable.Optimize learningRate) |> Seq.toList
  
              // record loss
  
negative.code: 
                  let multiTrnLosses = trnLosses |> List.map (fun v -> v.Force()) |> multiAvg
                  trainable.ResetModelState ()
                  setDumpPrefix iter "val"
                  let multiValLosses = valBatches |> Seq.map trainable.Losses |> multiAvg
                  trainable.ResetModelState ()
                  setDumpPrefix iter "tst"
                  let multiTstLosses = tstBatches |> Seq.map trainable.Losses |> multiAvg
  
                  // compute and log primary validation & test loss
  