tff.simulation.ClientData
объекты предоставляют атрибут client_ids
, который представляет список строк, идентифицирующих пользователей в этом наборе данных.
Таким образом, вы можете напрямую выбирать из этого списка, и используйте метод create_tf_dataset_for_client
для того же объекта, чтобы создать набор данных этого пользователя. Предполагая tff.simulation.ClientData
объект client_data
, псевдокод будет выглядеть следующим образом:
import random
...
for round_num in range(2, NUM_ROUNDS):
selected_clients = random.sample(client_data.client_ids, USERS_PER_ROUND)
federated_data = [
client_data.create_tf_dataset_for_client(n) for n in selected_clients]
state, metrics = iterative_process.next(state, federated_data)
Большая часть исследовательского кода, включенного в TFF, несколько отделяет задачу выбора клиентов от проведения обучения l oop, поэтому Я не могу указать на хороший пример этого паттерна, но TFF, я думаю, был бы рад принять участие в обновлении учебников, чтобы использовать такой паттерн, чтобы помочь немного продемонстрировать гибкость ClientData
API. лучше.