【问题标题】:How to customize different TensorFlow-Federated functions?如何自定义不同的 TensorFlow-Federated 函数?
【发布时间】:2019-06-11 09:47:59
【问题描述】:

我已经准确地阅读和研究了 TFF guideAPIs 页面。但是我对这些功能的使用以及如何控制它们感到困惑。

例如,在教程中,有一个函数负责聚合指标。

     @tff.federated_computation
     def aggregate_mnist_metrics_across_clients(metrics):
       return {
       'num_examples': tff.federated_sum(metrics.num_examples),
       'loss': tff.federated_mean(metrics.loss, metrics.num_examples),
       'accuracy':tff.federated_mean(metrics.accuracy,metrics.num_examples)
    }

MODEL 类中调用。但是在类中调用度量之后,我需要访问度量的元素。我想在模型中调用后修改指标并在其他函数中调用它们。
但是,例如,我不能调用它们(例如,使用 tff.Type,例如 .type_signature,因为它需要为 __getattr__ 命名元组)。而且我不明白它们如何在其他函数的代码主体中使用的概念背后的直观概念?
在 TFF 中,我希望每个函数在服务器端或客户端都有一个位置,但是它们都可以在任何函数中访问,这会让人感到困惑。 谁负责计算? @CLIENT 还是 @SERVER?
谁能帮帮我?

【问题讨论】:

    标签: python tensorflow-federated


    【解决方案1】:

    也许一种误解是tff.learning.Modeltff.learning 模块使用的接口,如果没有任何模块方法(如tff.learning.build_federated_averaging_process()),则不需要。目前,联合平均实现没有挂钩来修改聚合后但在从计算返回之前的指标。

    我强烈建议您查看Custom Federated Algorithms, Part 2: Implementing Federated Averaging,它逐步介绍了如何在不使用tff.learning 的情况下实现联合平均,这将允许将计算扩展到所需的任何方向。

    补充说明:

    aggregate_mnist_metrics_across_clientsclass MnistModeltff.learning.Model.federated_output_computation 方法中返回,在教程中的几个单元格中。 metrics 参数是tff.learning.Model.report_local_outputs() 的返回值。这两种方法都是需要为tff.learning 模块方法(例如tff.learning.build_federated_averaging_process())实现的接口,以便以正确的方式连接计算。

    在 TFF 中,我希望每个函数在服务器端或客户端都有一个位置,但它们都可以在任何函数中访问,这会让人感到困惑。

    在 TFF 中,data 有位置,而不是 计算。接受未放置值的计算可用于使用 TFF intrinsics 放置的值(例如 tff.federated_mean()tff.federated_map())。此外,TFF 计算可以接受位于 CLIENTSSERVER 的值,也可以返回位于任一位置的值。

    如果您还没有,我强烈建议您查看两部分教程自定义联合算法。花时间介绍了TFF的编程和执行模型:

    【讨论】:

    • 亲爱的@ZacharyGarrett,我编辑了这个问题,你能看一下吗?提前致谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2018-09-30
    相关资源
    最近更新 更多