Алгебраическая операция над квантованной моделью

Системная информация

Версия 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)

0 ответов

Другие вопросы по тегам