Алгебраическая операция над квантованной моделью
Системная информация
Версия TensorFlow (вы используете):'1.15.0'
Вы готовы внести свой вклад (да / нет):
Мотивация Включение операций над алгебраическими операциями над квантованной моделью, помощь во многих приложениях, таких как федеративное обучение.
Опишите функцию, которую я хотел бы иметь доступ к весам уровней квантования (например, 1) получение, 2) операция, 3) установка), как я делаю в следующем коде. Это помогает проверить влияние квантования на федерацию.
Я думал использовать:
get_weights_and_quantizers: это будет сделано для всех моделей. getAverageModel: это объединит все слои из разных моделей в один. set_quantize_weights: это заменит основную модель на усредненную квантованную. Любые предложения будут очень признательны. Благодарность
### КодАлгебраическая операция:
def getAverageModel(models):
weights = [model.get_weights() for model in models]
new_weights = list()
for weights_list_tuple in zip(*weights):
new_weights.append(
[np.array(weights_).mean(axis=0)\
for weights_ in zip(*weights_list_tuple)])
return new_weights
Вызов алгебраической операции
for e in range(nrofIterations):
results = [trainModelPCA(models_FLPCA[client],X_train_CLPCA[client],y_train_CLPCA[client],
X_test_CLPCA[client],y_test_CLPCA[client],batchsize=batchSZ,epoch=Local_Epchs) for client in range(clients)]
# we average the models_FLPCA, and updates with new weights
new_weights = getAverageModel(models_FLPCA)
for i in range(clients):
models_FLPCA[i].set_weights(new_weights)