docs: def train(self, **kwargs):
          """
          Do the workflow training
          """
          log.info("Starting to train...")
          if not self.setup_run:
              self.setup()
          self.trained_tasks = []
          for task in self.tasks:
              data = self.reformatted_input[task.data_format]['data']
              target = self.reformatted_input[task.data_format]['target']
              if data is None:
                  raise Exception("Data cannot be none.  Check the config file to make sure the right input is being read.")
              kwargs['data']=data
              kwargs['target']=target
              trained_task = self.execute_train_task_with_dependencies(task, **kwargs)
              self.trained_tasks.append(trained_task)
              #If the trained task alters the data in any way, pass it down the chain to the next task
              if hasattr(trained_task, 'data'):
                  self.reformatted_input[task.data_format]['data'] = trained_task.data
          log.info("Finished training.")