【问题标题】:How to change the update that the client send to the server Tensorflow Federated如何更改客户端发送到服务器 Tensorflow Federated 的更新
【发布时间】:2021-12-04 08:36:36
【问题描述】:

我正在尝试以 simple_fedavg 为例来了解 Tensorflow Federated 的工作原理。

例如,我仍然不明白如何更改客户端向服务器发送的内容。

我不想发送更新的所有权重,我想发送这样形成的列表:

  test[index] = test_stc.stc_compression(test[index], sparsification_rate)

test_stc.stc_compression(test[index], sparsification_rate) 返回 5 个值:negatives, positives, average, original_shape, new_shape,然后我想在运行 round_model_delta = tff.federated_mean(client_outputs.weights_delta, weight=weight_denom) 之前访问服务器端的这些信息,以创建我将用于 tff.federated_mean 的权重。

所以,基本上,我想更改client_update 以发送我创建的列表而不是所有权重,然后在服务器上使用客户端发送的信息创建自定义权重列表。只有在创建新的自定义重量列表后,我才希望服务器更新模型。

我实际上试图更改client_updatereturn ClientOutput(test, client_weight, loss_sum / client_weight),但是我不知道如何访问服务器上的test 变量以及我需要在哪个过程/函数中执行它。

由于我的主要语言不是英语,因此我希望我已经足够清楚了。

【问题讨论】:

    标签: python tensorflow tensorflow-federated federated-learning


    【解决方案1】:

    请参阅tff.federated_aggregate 运算符,它公开了您可能需要的控件(我不确定我是否遵循它),包括在添加到聚合累加器之前应该对服务器上的每个客户端值进行哪些计算。

    您可以将提到的tff.federated_mean 视为这个通用运算符的一个特例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 2015-07-20
      • 2021-05-16
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多