Первое, что я хотел бы исследовать здесь: эта модель тренируется централизованно?
На это можно ответить, попробовав что-то вроде:
model = create_compiled_keras_model()
# Assumes client_data_object is tff.simulation.ClientData object
centralized_dataset = client_data_object.create_tf_dataset_from_all_clients()
model.fit(centralized_dataset, verbose=1)
Если эти цифры не t go вниз, маловероятно, что обучение модели федеративным способом приведет к конвергенции.
Вы упоминаете, что инициализация может быть проблемой здесь; если это проблема, она должна появиться здесь, так как TFF фактически вытягивает инициализацию инициализации, закодированной в самой модели_fn .
Вы также упоминаете пакетную норму; Судя по всему, лично я не видел, чтобы пакетная норма использовалась в федеративных условиях хорошо. Мы видели групповую норму, работающую в некоторых задачах по зрению, но это может быть не сразу связать групповую норму с архитектурой VGG в зависимости от API, предоставляемого Keras.
Если эти числа do go вниз, то первое, что я бы исследовал в федеративной обстановке, это установил бы скорость обучения намного выше (например, на 2-3 порядка), чем та, которую вы видите хорошо в централизованной обстановке.