Потеря доступа клиентов при наличии моделей keras tff NN

Я безуспешно пытаюсь получить потери всех клиентов в модели тензорного потока. В ответе на публикацию как распечатать локальные выходные данные в федеративном тензорном потоке? предлагается создать нашу модель 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


person RiDaLa    schedule 14.06.2019    source источник


Ответы (1)


tff.learning.Model не является декоратором для функций, это интерфейс класса, используемый модулем tff.learning.

Вероятно, лучший способ изменить реализацию tff.learning.Model.federated_output_computation (что рекомендуется в как печатать локальные выходные данные в федеративном тензорном потоке?) заключается в создании собственного подкласса tff.learning.Model, реализующего другое свойство federated_output_computation. Это было бы близко к повторной реализации tff.learning.from_keras_model(), за исключением предоставления настраиваемого агрегирования показателей; поэтому, глядя на реализацию () может быть полезным, но в настоящее время использование моделей Keras нетривиально.

person Zachary Garrett    schedule 14.06.2019