Проблема с реализацией алгоритма FedAvg в TF ⇐ Python
-
Anonymous
Проблема с реализацией алгоритма FedAvg в TF
Я реализую FL с использованием TF в Google Colab (не используя TFF), я использую наборы данных Bot-IoT и разделяю данные на 10 клиентов, так что каждый клиент принимает все типы классов, чтобы он мог обучаться на всех классах.
Проблема, с которой я сталкиваюсь, заключается в агрегировании полученных весов модели от каждого клиента для получения глобальной точности и полноты, которая в моем коде равна 0%.
вот функция агрегирования:
def federated_averaging(client_weights): новый_вес = [] # Количество слоев в модели
# Суммируем веса for Weights_list_tuple в zip(*client_weights): # Перебираем каждый слой Layer_mean = np.mean(np.array([np.array(weights) для весов в Weights_list_tuple]), axis=0) new_weights.append(layer_mean) вернуть новые_веса Мой код состоит в том, чтобы собирать веса модели в каждом раунде, а затем усреднять веса, чтобы получить средний вес, который использовался для расчета глобальной точности.
Я реализую FL с использованием TF в Google Colab (не используя TFF), я использую наборы данных Bot-IoT и разделяю данные на 10 клиентов, так что каждый клиент принимает все типы классов, чтобы он мог обучаться на всех классах.
Проблема, с которой я сталкиваюсь, заключается в агрегировании полученных весов модели от каждого клиента для получения глобальной точности и полноты, которая в моем коде равна 0%.
вот функция агрегирования:
def federated_averaging(client_weights): новый_вес = [] # Количество слоев в модели
# Суммируем веса for Weights_list_tuple в zip(*client_weights): # Перебираем каждый слой Layer_mean = np.mean(np.array([np.array(weights) для весов в Weights_list_tuple]), axis=0) new_weights.append(layer_mean) вернуть новые_веса Мой код состоит в том, чтобы собирать веса модели в каждом раунде, а затем усреднять веса, чтобы получить средний вес, который использовался для расчета глобальной точности.
Мобильная версия