INNER CODE UNIT · Python
_record_round_metrics
Tisha-runwal/Personalized-Federated-Learning-for-Privacy--Preserving-and-Scalable-IoT-Driven-Smart-Healthcare · pfl_hcare/fl/server.py:400
def _record_round_metrics(
mc, rnd, method, num_clients, selected_ids, fit_results,
prev_acc, prev_loss, per_client_acc, quantizer, secure_agg, dp_accountant,
):
"""Record metrics when aggregation is skipped (NaN fallback)."""
grad_norms = [r[3].get("grad_norm", 0.0) for r in fit_results]
mc.record_round(
round_num=rnd,
method=method,
global_accuracy=prev_acc,
global_loss=prev_loss,
num_clients=len(selected_ids),
total_clients=num_clients,
clients_selected=selected_ids,
avg_grad_norm=float(np.nanmean(grad_norms)) if grad_norms else 0.0,
per_client_accuracy=per_client_acc,
epsilon_spent=dp_accountant.get_epsilon() if dp_accountant else 0.0,
bytes_original=0, bytes_quantized=0,