func trainNetwork() {
   // Restart network values
   logs = ""
   training = true

   // Setting training values
   let epochs = 200
   let learningRate: Float = 0.01

   eval(model!)
   let gradients = valueAndGrad(model: model, lossFunction)
   let optimizer = SGD(learningRate: learningRate)

   // Training
   for pass in 0..<epochs {
      // Gradients
      let (loss, grads) = gradients(model, inputs, targets)

      // Calculate Error
      let error: Double = loss.item()
      if pass % 10 == 0 {
         logs += "Error: \(String(format: "%.6f", error))\n"
      }
      optimizer.update(model: model, gradients: grads)
      eval(model!, optimizer)
   }
   let last = model(inputs)
   logs += "Last Output: \(last.item(Float.self))\n"
   training = false
}