【问题标题】:Can I use different weights and bias for each of the clients in tensorflow federated?我可以为 tensorflow federated 中的每个客户端使用不同的权重和偏差吗?
【发布时间】:2020-02-29 09:02:57
【问题描述】:

我想知道是否可以为 tensorflow_federated 中的每个客户端使用不同的权重和偏差。

请帮忙。

【问题讨论】:

    标签: tensorflow tensorflow-federated


    【解决方案1】:

    是的,TensorFlow Federated 支持客户端拥有自己的模型参数。

    tff.learning.build_federated_averaing_process 中实施联合平均从一个全局共享模型开始,该模型对每个客户端都是tff.federated_broadcast(此时每个客户端都有相同的模型权重和偏差)。然后每个客户端在其自己的本地数据上进行训练,从而导致每个客户端具有不同的权重和偏差。最后,仅使用tff.federated_mean 将权重重新组合成一个共享的全局模型。

    在这种情况下,计算将全局模型作为输入并输出一个新的全局模型,从而将单个客户端权重和偏差包含在模拟中。但是,可以针对各个模型重写模拟。

    类似:

    MODEL_WEIGHTS_TYPE = ...  # a nested structure of tensors of the model weights
    DATASET_TYPE = ... # a tff.SequenceType
    
    @tff.tf_computation(MODEL_WEIGHTS_TYPE, DATASET_TYPE)
    def local_train(model_weights, dataset):
       # do local training
       return new_model_weights
    
    # Simulate 3 clients
    client_model_weights = [w_a, w_b, w_c]
    client_training_data = [d_a, d_b, d_c]
    
    client_model_weights = tff.federated_map(
       local_train, (client_model_weights, client_training_data))
    
    # client_model_weights[0] == the new, different weights for client 'A'
    

    【讨论】:

    • 请您帮助理解如何定义 MODEL_WEIGHTS_TYPE 和 DATASET_TYPE 以模拟 3 个客户端的示例。对我有很大的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多