research/gam/gam/trainer/trainer_classification.py [818:873]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      if self.enable_summaries and step % self.summary_step == 0:
        loss_val, summary, iter_cls_total, _ = session.run(
            [self.loss_op, self.summary_op, self.iter_cls_total, self.train_op],
            feed_dict=feed_dict)
        summary_writer.add_summary(summary, iter_cls_total)
        summary_writer.flush()
      else:
        loss_val, _ = session.run((self.loss_op, self.train_op),
                                  feed_dict=feed_dict)

      # Log the loss, if necessary.
      if step % self.logging_step == 0:
        logging.info('Classification step %6d | Loss: %10.4f', step, loss_val)

      # Evaluate, if necessary.
      if step % self.eval_step == 0:
        val_acc = self._evaluate(val_indices, 'val', session, summary_writer)
        test_acc = self._evaluate(test_indices, 'test', session, summary_writer)

        if step % self.logging_step == 0 or val_acc > best_val_acc:
          logging.info(
              'Classification step %6d | Loss: %10.4f | val_acc: %10.4f | '
              'test_acc: %10.4f', step, loss_val, val_acc, test_acc)
        if val_acc > best_val_acc:
          best_val_acc = val_acc
          best_test_acc = test_acc
          if self.checkpoint_path:
            self.saver.save(
                session, self.checkpoint_path, write_meta_graph=False)
            checkpoint_saved = True
          # Go for at least num_iter_after_best_val more iterations.
          min_num_iter = max(self.min_num_iter,
                             step + self.num_iter_after_best_val)
          logging.info(
              'Achieved best validation. '
              'Extending to at least %d iterations...', min_num_iter)

      step += 1
      has_converged, iter_below_tol = self.check_convergence(
          prev_loss_val,
          loss_val,
          step,
          self.max_num_iter,
          iter_below_tol,
          min_num_iter=min_num_iter)
      session.run(self.iter_cls_total_update)
      prev_loss_val = loss_val

    # Return to the best model.
    if checkpoint_saved:
      logging.info('Restoring best model...')
      self.saver.restore(session, self.checkpoint_path)

    return best_test_acc, best_val_acc

  def predict(self, session, indices, is_train):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



research/gam/gam/trainer/trainer_classification_gcn.py [817:872]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      if self.enable_summaries and step % self.summary_step == 0:
        loss_val, summary, iter_cls_total, _ = session.run(
            [self.loss_op, self.summary_op, self.iter_cls_total, self.train_op],
            feed_dict=feed_dict)
        summary_writer.add_summary(summary, iter_cls_total)
        summary_writer.flush()
      else:
        loss_val, _ = session.run((self.loss_op, self.train_op),
                                  feed_dict=feed_dict)

      # Log the loss, if necessary.
      if step % self.logging_step == 0:
        logging.info('Classification step %6d | Loss: %10.4f', step, loss_val)

      # Evaluate, if necessary.
      if step % self.eval_step == 0:
        val_acc = self._evaluate(val_indices, 'val', session, summary_writer)
        test_acc = self._evaluate(test_indices, 'test', session, summary_writer)

        if step % self.logging_step == 0 or val_acc > best_val_acc:
          logging.info(
              'Classification step %6d | Loss: %10.4f | val_acc: %10.4f | '
              'test_acc: %10.4f', step, loss_val, val_acc, test_acc)
        if val_acc > best_val_acc:
          best_val_acc = val_acc
          best_test_acc = test_acc
          if self.checkpoint_path:
            self.saver.save(
                session, self.checkpoint_path, write_meta_graph=False)
            checkpoint_saved = True
          # Go for at least num_iter_after_best_val more iterations.
          min_num_iter = max(self.min_num_iter,
                             step + self.num_iter_after_best_val)
          logging.info(
              'Achieved best validation. '
              'Extending to at least %d iterations...', min_num_iter)

      step += 1
      has_converged, iter_below_tol = self.check_convergence(
          prev_loss_val,
          loss_val,
          step,
          self.max_num_iter,
          iter_below_tol,
          min_num_iter=min_num_iter)
      session.run(self.iter_cls_total_update)
      prev_loss_val = loss_val

    # Return to the best model.
    if checkpoint_saved:
      logging.info('Restoring best model...')
      self.saver.restore(session, self.checkpoint_path)

    return best_test_acc, best_val_acc

  def predict(self, session, indices, is_train):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



