INNER CODE UNIT · Python

rounds_since

Tisha-runwal/Personalized-Federated-Learning-for-Privacy--Preserving-and-Scalable-IoT-Driven-Smart-Healthcare · pfl_hcare/fl/server.py:372

        rounds_since = current_round - last_participation.get(cid, 0)
        if rounds_since >= min_interval:
            forced.append(cid)
        else:
            candidates.append(cid)

    n_to_sample = max(0, n_select - len(forced))

    if n_to_sample > 0 and candidates:
        # Eq.9: p_i = ||grad_i|| / sum(||grad_j||)
        norms = np.array([gradient_norms.get(cid, 1.0) for cid in candidates])
        norms = np.clip(norms, 1e-8, None)  # avoid zero
        probs = norms / norms.sum()
        n_sample = min(n_to_sample, len(candidates))
        sampled_idx = rng.choice(len(candidates), size=n_sample, replace=False, p=probs)
        selected = forced + [candidates[i] for i in sampled_idx]
    else:
        selected = forced[:n_select] if len(forced) > n_select else forced

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…