anchor.diff:  ==============
   
   In this example we will show how to learn MNIST classification using a two-layer feed-forward network.
  +
   You can run this example by executing `FsiAnyCPU.exe docs\content\mnist.fsx` after cloning the Deep.Net repository.
  +You can move your mouse over any symbol in the code samples to see the full signature.
  +A [quick introduction to F# signatures](https://fsharpforfunandprofit.com/posts/function-signatures/) might be helpful.
   
   ### Namespaces
   The `ArrayNDNS` namespace houses the numeric tensor functionality.
  
positive.code:     ....
      Test loss after  1000 iterations: 0.2713
  
  In this example the high learning rate of 0.1 is feasible because we are evaluating the gradient on the whole dataset (50 000 images) and thus it is very stable.
  If we did [mini-batch training](http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf) instead, i.e. split the training set into small mini-batches and update the parameters after estimating the gradient on a mini-batch, we would have to use a smaller learning rate.
  
  
  Deep.Net also provides a generic training function with parameter and loss logging, automatic adjustment of the learning rate and automatic termination.
  We will show its use in a later chapter.
  
  
negative.code: We can now test our work so far by calculating the loss of the *untrained* model on the MNIST test set.
  *)
  
  let tstLossUntrained = lossFn mnist.TstImgsFlat mnist.TstLbls
                         |> ArrayND.value
  printfn "Test loss (untrained): %.4f" tstLossUntrained
  
  (**
  We call our compiled loss function as expected and pipe the result into the `Tensor.value` function to extract the float value from the zero-rank tensor.
  This should print something similar to
  
  