【发布时间】:2020-07-10 10:49:15
【问题描述】:
我的 Tensorflow 联合模型收敛时间过长。当我使用没有 TFF 包装的相同模型时,使用 tensoflow 2.0 对其进行训练,准确率在几个时期内达到 0.97。然而,通过 TFF 训练,相同的模型在 30 个 epoch 内只能达到 0.03。 TFF 训练期间准确率如此低的原因可能是什么。有没有办法改善这一点。我的代码如下:
# Building the Federated Averaging Process
iterative_process = tff.learning.build_federated_averaging_process(
model_fn,
client_optimizer_fn=lambda: tf.keras.optimizers.SGD(learning_rate=0.02),
server_optimizer_fn=lambda: tf.keras.optimizers.SGD(learning_rate=1.0))
str(iterative_process.initialize.type_signature)
state = iterative_process.initialize()
state, metrics = iterative_process.next(state, federated_train_data)
print('round 1, metrics={}'.format(metrics))
NUM_ROUNDS = 1000
for round_num in range(2, NUM_ROUNDS):
state, metrics = iterative_process.next(state, federated_train_data)
print('round {:2d}, metrics={}'.format(round_num, metrics))
【问题讨论】:
-
通过添加信息可以加快问题的诊断速度:
model_fn和federated_training_data的定义,以及代码运行时打印语句的输出。
标签: tensorflow tensorflow-federated