anchor.diff:  
   let epochs = 20
   let batchSize = 64
  -let numSamples = 32
  +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, n=1000)
  +let trainSet = MNIST("../data", urls=urls, train=true)
   let trainLoader = trainSet.loader(batchSize=batchSize, shuffle=true)
  -let validSet = MNIST("../data", urls=urls, train=false, n=10)
  +let validSet = MNIST("../data", urls=urls, train=false)
   let validLoader = validSet.loader(batchSize=batchSize, shuffle=false)
   
   
  
positive.code:         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))
  
      classifier.noDiff()
      let mutable validLoss = dsharp.zero()
      let mutable correct = 0
  
negative.code:         correct <- correct + int (pred.eq(target).sum())
      validLoss <- validLoss / validSet.length
      let accuracy = 100.*(float correct) / (float validSet.length)
      printfn "\nValidation loss: %A, accuracy: %.2f%%" (float validLoss) accuracy
  
      let samples, sampleLabels = validLoader.batch(numSamples)
      printfn "Sample predictions:\n%s" (samples.toImageString(gridCols=4))
      printfn "True labels     : %A " (sampleLabels.int())
      let predictedLabels = (samples --> classifier).argmax(dim=1)
      printfn "Predicted labels: %A\n" predictedLabels
  
  