我的目标是从 .hdf5 文件(它是一个 Keras 模型)加载一个基本模型,并继续使用联邦学习对其进行训练。以下是我为 FL 初始化基本模型的方法:
def model_fn():
model = tf.keras.load_model(path/to/model.hdf5)
return tff.learning.from_keras_model(model=model,
dummy_batch=db,
loss=loss,
metrics=metrics)
trainer = tff.learning.build_federated_averaging_process(model_fn)
state = trainer.initialize()
但是,似乎生成的 state.model 权重是随机初始化的,并且与我保存的模型不同。当我在任何联合训练之前评估模型的性能时,它作为一个随机初始化的模型执行:50% 的准确度。以下是我评估性能的方式:
def evaluate(state):
keras_model = tf.keras.models.load_model(path/to/model.hdf5, compile=False)
tff.learning.assign_weights_to_keras_model(keras_model, state.model)
keras_model.compile(loss=loss, metrics=metrics)
return keras_model.evaluate(features, values)
如何使用保存的模型权重初始化 tff 模型?