在联邦学习环境中,应该工作的这样一种类方法是 tff.simulation.ClientData.from_clients_and_fn。在这里,如果我传递一个 client_ids 列表和一个在给定客户端 ID 时返回适当数据集的函数,您将获得一个功能齐全的 ClientData。
我认为在这里,定义我可能使用的函数的一种方法是构建一个 Python 字典,它将客户端 ID 映射到 tf.data.Dataset 对象——然后你可以定义一个接受客户端 ID 的函数,在dict,并返回数据集。所以我将函数定义如下,但我认为这是错误的,你怎么看?
list = ["0","1","2"]
tab = {"0":ds, "1":ds, "2":ds}
def create_tf_dataset_for_client_fn(id):
return ds
source = tff.simulation.ClientData.from_clients_and_fn(list, create_tf_dataset_for_client_fn)
我在这里假设 4 个客户端具有相同的数据集:'ds'