def METHOD_NAME(self, model, validation_results_dict=None):
    """
    Returns the averaged model
    :param model: will be used to determine arch
    :param validation_results_dict: if provided, will update the average model before returning
    :param target_device: if provided, return sd on target device
    """
    # If validation tuple is provided, update the average model
    if validation_results_dict is not None:
        averaging_snapshots_dict = self.update_snapshots_dict(model, validation_results_dict)
    else:
        averaging_snapshots_dict = self._get_averaging_snapshots_dict()
    torch.save(averaging_snapshots_dict, self.averaging_snapshots_file)
    average_model_sd = averaging_snapshots_dict["snapshot0"]
    for n_model in range(1, self.number_of_models_to_average):
        if averaging_snapshots_dict["snapshot" + str(n_model)] is not None:
            net_sd = averaging_snapshots_dict["snapshot" + str(n_model)]
            # USING MOVING AVERAGE
            for key in average_model_sd:
                average_model_sd[key] = torch.true_divide(average_model_sd[key] * n_model + net_sd[key], (n_model + 1))
    return average_model_sd