func trainNetwork() {
   let epochs = 200
   let learningRate = 0.01

   // Restart networks values
   logs = ""
   data = NetworkData()
   training = true

   for pass in 0..<epochs {
      // Forward propagation
      let output = forwardPass()

      // Calculate Error
      let error = pow((output - data.target), 2)
      if pass % 10 == 0 {
         logs += "Error: \(String(format: "%.6f", error))\n"
      }
      // Back propagation
      backPropagation(output: output)

      // Optimization
      optimization(rate: learningRate)
   }
   // Show output after training
   let last = String(format: "%.6f", forwardPass())
   logs += "Output: \(last)\n"
   training = false
}