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