code: def relax_isometry(self):
          
          for ii in range(self.relaxation_kwds['niter']):
              self.H = self.compute_dual_rmetric()
  
              self.loss = self.rieman_loss()
              self.trace_var.update(ii,self.H,self.Y,self.eta,self.loss)
              self.trace_var.print_report(ii)
              self.trace_var.save_backup(ii)
  
              self.compute_gradient()
  
              self.make_optimization_step(first_iter=(ii == 0))
  
          self.H = self.compute_dual_rmetric()
  
          self.trace_var.update(-1,self.H,self.Y,self.eta,self.loss)
          self.trace_var.print_report(ii)
          tracevar_path = os.path.join(self.trace_var.backup_dir, 'results.pyc')
          TracingVariable.save(self.trace_var,tracevar_path)
docs: Main function for doing riemannian relaxation.