【问题标题】:How to print values passed by client in tensorflow federated?如何在 tensorflow federated 中打印客户端传递的值?
【发布时间】:2020-02-18 10:43:21
【问题描述】:

我正在尝试理解 tensorflow federated。我指的是https://www.tensorflow.org/federated/tutorials/custom_federated_algorithms_2#gradient_descent_on_a_sequence_of_local_data 网站。这里我不明白如何在这个函数中打印每个客户端传递的值?

SERVER_FLOAT_TYPE = tff.FederatedType(tf.float32, tff.SERVER, all_equal=True)

@tff.federated_computation(
    SERVER_MODEL_TYPE, SERVER_FLOAT_TYPE, CLIENT_DATA_TYPE)
def federated_train(model, learning_rate, data):
  return tff.federated_mean(
      tff.federated_map(
          local_train,
          [tff.federated_broadcast(model),
           tff.federated_broadcast(learning_rate),
           data]))

还有谁能告诉我 tff.sequence_reduce 的用途。

请帮忙。

【问题讨论】:

    标签: tensorflow tensorflow-federated


    【解决方案1】:

    如果您想在此处检查客户端的值,您可以想象有几种方法。

    如果该函数是tff.tf_computation,则可以在local_train 内部使用tf.print 操作,我认为这里不是这种情况。

    另一种方法是将函数调用拉得更多,所以不要写tff.federated_mean(tff.federated_map(local_train...))

    我们可以写

    train_results_on_clients = tff.federated_map(local_train...)
    aggregated_result =tff.federated_mean(train_results_on_clients)
    

    然后,如果外部函数返回这两个值,则表示 train_results_on_clients 在 Python 运行时中具体化的值将是在所有客户端上运行单轮训练的结果,显示为一个列表,每个客户端一个条目; TFF 允许您执行此操作,就像您可以通过返回它们来检查函数的中间值一样。

    行不通的一件事是在联合计算中插入 Python 打印语句;这只会在跟踪时执行,原因与必须在 TF 图中使用 tf.print 而不是 Python print 的原因相同(至少,没有签名)。

    至于tff.sequence_reduce,其目的实际上是为了展示 TFF 的本地计算无关设计;关键是,模型训练循环的编写方式与作为本地计算引擎的 TensorFlow 完全无关。

    希望这会有所帮助!

    【讨论】:

    • 感谢您的帮助。我想知道每个客户端传递的值,因此我尝试拉函数调用并将其写为 train_results_on_clients = tff.federated_map(local_train...) aggregated_result =tff.federated_mean(train_results_on_clients) 并且我已将 tf.print 用于 train_results_on_clients 但我收到以下错误
    • tf.print 在联合计算上下文中不起作用;只有在装饰为 tff.tf_computation 的函数内部,tf.print 才会做任何好事。您在这里的另一个选择是从 Python 函数 return train_results_on_clients ;这是我会推荐的
    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 2021-04-27
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多