1

我试图在没有运气的情况下获得张量流模型中所有客户的损失。发布如何在 tensorflow federated 中打印本地输出的答案? 建议从头开始创建我们的 NN 模型。但是,我已经有了我的 keras NN 模型。那么有没有办法在不必从头开始构建 NN 的情况下仍然访问本地客户损失?

我尝试使用 tff.federated_collect(),但不确定这怎么可能。

这部分是我的尝试:

    trainer_Itr_Process = tff.learning.build_federated_averaging_process(model_fn_Federated,server_optimizer_fn=(lambda : tf.keras.optimizers.SGD(learning_rate=learn_rate)),client_weight_fn=None)
    FLstate = trainer_Itr_Process.initialize()

    @tff.learning.Model
    def federated_output_computation():
        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),
            'per_client/num_examples': tff.federated_collect(metrics.num_examples),
            'per_client/loss': tff.federated_collect(metrics.loss),
            'per_client/accuracy': tff.federated_collect(metrics.accuracy),
            }

这是我收到的错误:

   @tff.learning.Model
TypeError: object() takes no parameters

4

1 回答 1

0

tff.learning.Model不是函数的装饰器,它是tff.learning模块使用的类接口。

改变实现的最佳方法tff.learning.Model.federated_output_computation如何在 tensorflow federated 中打印本地输出中推荐什么?)可能是创建您自己的子类tff.learning.Model,它实现不同的federated_output_computation属性。除了提供自定义指标聚合外,这将接近于重新实现tff.learning.from_keras_model();因此查看实现(此处)可能很有用,但目前摄取 Keras 模型并非易事。

于 2019-06-14T17:19:12.403 回答