def calculate_metrics(self, model, train_loader, valid_loader, metrics_dict):
        """Add standard and custom metrics to metrics_dict"""
        # Check whether or not it's time for validation as well
        self.log_count += 1
        log_valid = (
            valid_loader is not None
            and self.valid_every_X
            and not (self.log_count % self.valid_every_X)
        )

        metrics_dict = {}

        # Calculate custom metrics
        if self.config["log_train_metrics_func"] is not None:
            func = self.config["log_train_metrics_func"]
            func_list = func if isinstance(func, list) else [func]
            for func in func_list:
                metrics_dict = self._calculate_custom_metrics(
                    model, train_loader, func, metrics_dict, split="train"
                )
        if self.config["log_valid_metrics_func"] is not None and log_valid:
            func = self.config["log_valid_metrics_func"]
            func_list = func if isinstance(func, list) else [func]
            for func in func_list:
                metrics_dict = self._calculate_custom_metrics(
                    model, valid_loader, func, metrics_dict, split="valid"
                )

        # Calculate standard metrics
        metrics_dict = self._calculate_standard_metrics(
            model, train_loader, self.log_train_metrics, metrics_dict, "train"
        )

        if log_valid:
            metrics_dict = self._calculate_standard_metrics(
                model, valid_loader, self.log_valid_metrics, metrics_dict, "valid"
            )

        return metrics_dict
def calculate_metrics ( self , model , train_loader , valid_loader , metrics_dict ) : self . log_count += 1 log_valid = ( valid_loader is not None and self . valid_every_X and not ( self . log_count % self . valid_every_X ) ) metrics_dict = { } if self . config [ "log_train_metrics_func" ] is not None : func = self . config [ "log_train_metrics_func" ] func_list = func if isinstance ( func , list ) else [ func ] for func in func_list : metrics_dict = self . _calculate_custom_metrics ( model , train_loader , func , metrics_dict , split = "train" ) if self . config [ "log_valid_metrics_func" ] is not None and log_valid : func = self . config [ "log_valid_metrics_func" ] func_list = func if isinstance ( func , list ) else [ func ] for func in func_list : metrics_dict = self . _calculate_custom_metrics ( model , valid_loader , func , metrics_dict , split = "valid" ) metrics_dict = self . _calculate_standard_metrics ( model , train_loader , self . log_train_metrics , metrics_dict , "train" ) if log_valid : metrics_dict = self . _calculate_standard_metrics ( model , valid_loader , self . log_valid_metrics , metrics_dict , "valid" ) return metrics_dict
Add standard and custom metrics to metrics_dict