Allow auto-reduce of Result even if _epoch_end is implemented
🚀 Feature

Currently, if Result is used and *_epoch_end is implemented, auto-reduce of result object is skipped.
The code for the validation loop is linked below. The same logic applies to the train and test loops.

  
    
      pytorch-lightning/pytorch_lightning/trainer/evaluation_loop.py
    
    
        Lines 202 to 210
      in
      3281586
    
  
  
    

        
          
               if is_overridden('validation_epoch_end', model=model): 
        

        
          
                   if using_eval_result: 
        

        
          
                       eval_results = self.__gather_epoch_end_eval_results(outputs) 
        

        
          
            
        

        
          
                   eval_results = model.validation_epoch_end(eval_results) 
        

        
          
                   user_reduced = True 
        

        
          
            
        

        
          
           if using_eval_result and not user_reduced: 
        

        
          
               eval_results = self.__auto_reduce_result_objs(outputs) 
        
    
  


So "doing something special with the outputs" together with auto-reduce is not possible. Reduce of all metrics must be done manually by the user in _epoch_end. I think a mechanism to use auto-reduce while adding something special on top of that would be beneficial.