anchor.diff:          let l = dsharp.nllLoss(output, target)
           l.reverse()
           optimizer.step()
  -        printfn "Epoch: %A/%A minibatch: %A/%A loss: %A" epoch epochs i trainLoader.length (float(l))
  +        printfn "Epoch: %A/%A, minibatch: %A/%A, loss: %A" epoch epochs i trainLoader.length (float(l))
   
  +
  +    printfn "Computing validation loss"
       classifier.noDiff()
       let mutable validLoss = dsharp.zero()
       let mutable correct = 0
  
positive.code:         correct <- correct + int (pred.eq(target).sum())
      validLoss <- validLoss / validSet.length
      let accuracy = 100.*(float correct) / (float validSet.length)
      printfn "Validation loss: %A, accuracy: %.2f%%" (float validLoss) accuracy
  
      // let samples, sampleLabels = validLoader.batch()
      let samples, sampleLabels = validLoader.batch(4)
      print (samples.toImageString(gridCols=4))
      print sampleLabels
  
negative.code: 
  let epochs = 20
  let batchSize = 64
  let numSamples = 4
  
  let urls = ["https://ossci-datasets.s3.amazonaws.com/mnist/train-images-idx3-ubyte.gz";
              "https://ossci-datasets.s3.amazonaws.com/mnist/train-labels-idx1-ubyte.gz";
              "https://ossci-datasets.s3.amazonaws.com/mnist/t10k-images-idx3-ubyte.gz";
              "https://ossci-datasets.s3.amazonaws.com/mnist/t10k-labels-idx1-ubyte.gz"]
  
  let trainSet = MNIST("../data", urls=urls, train=true)
  let trainLoader = trainSet.loader(batchSize=batchSize, shuffle=true)
  let validSet = MNIST("../data", urls=urls, train=false)
  let validLoader = validSet.loader(batchSize=batchSize, shuffle=false)
  
  
  