You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In this code, if server_solver.do_selection, you will select repeatitive clients right? and following that you use unique() to remove the repeaetitive one. It's possibly selection >= server_solver.selection_size.
But the question is when you aggregate the cluster. why you just do the repetitive operations for each cluster?
Plz see my notations.
def_aggregate_fedsoft(self, selection):
forsinrange(self.num_clusters):
next_weights=self.generate_zero_weights()
forkinselection[s]:
ifself.server_solver.do_selection:
# why the weight is 1 / server_solver.selection_size not len(selection)?aggregation_weight=1./self.server_solver.selection_sizeelse:
aggregation_weight=self.importance_weights_matrix[k][s]
client_weights=self.client_vec[k].get_model_dict()
forkeyinnext_weights.keys():
# why you just do aggregation for selection in cluster_num times?next_weights[key] +=aggregation_weight*client_weights[key].cpu()
self.cluster_vec[s].load_state_dict(state_dict=next_weights)
After I run the code, it really confused me cuz not as my expectation.
Thanks
The text was updated successfully, but these errors were encountered:
In this code, if server_solver.do_selection, you will select repeatitive clients right? and following that you use unique() to remove the repeaetitive one. It's possibly selection >= server_solver.selection_size.
But the question is when you aggregate the cluster. why you just do the repetitive operations for each cluster?
Plz see my notations.
After I run the code, it really confused me cuz not as my expectation.
Thanks
The text was updated successfully, but these errors were encountered: