text: Title: Darkflow - YOLOv1 - Loss function
  Body: Hi, Guys 
  
  Can someone explain how the loss function is working? Because from what I can tell it's being called cli.py builds the model, creates a framework and does a single pass to build the network. Then Train is called and calls the loss function and the training begins. Is this correct chain of events? 
  
  Also flow.py contains:
  Please see the comment below. 
  
  ```
  
     def train(self):
   
   loss_ph = self.framework.placeholders
      loss_mva = None; profile = list()
  
      batches = self.framework.shuffle()
      # Function Pointer to loss function
      loss_op = self.framework.loss
  
      print("LOSS FUNCTION POINTER: ",loss_op)
      for i, (x_batch, datum) in enumerate(batches):
          if not i: self.say(train_stats.format(
              self.FLAGS.lr, self.FLAGS.batch,
              self.FLAGS.epoch, self.FLAGS.save
          ))
  
          feed_dict = {
              loss_ph[key]: datum[key] 
                  for key in loss_ph }
          feed_dict[self.inp] = x_batch
          feed_dict.update(self.feed)
  
          fetches = [self.train_op, loss_op]
  
          if self.FLAGS.summary:
              fetches.append(self.summary_op)
  
           fetched = self.sess.run(fetches, feed_dict)
          print(fetched)
          loss = fetched[1]
          print(loss)
          # WHAT DOES THIS DO BELOW??????????
          if loss_mva is None: loss_mva = loss
          loss_mva = .9 * loss_mva + .1 * loss
          step_now = self.FLAGS.load + i + 1
  
          if self.FLAGS.summary:
              self.writer.add_summary(fetched[2], step_now)
  
          form = 'step {} - loss {} - moving ave loss {}'
          self.say(form.format(step_now, loss, loss_mva))
          profile += [(loss, loss_mva)]
  
          ckpt = (i+1) % (self.FLAGS.save // self.FLAGS.batch)
          args = [step_now, profile]
          if not ckpt: _save_ckpt(self, *args)
  
      if ckpt: _save_ckpt(self, *args)
  ```
  
  