Как получить клиентские модели (на основе Keras) в федеративном тензорном потоке?

Я ищу способ получить клиентские модели в качестве контрольных точек, которые я могу исследовать как стандартную модель keras. Я изучил этот вопрос, но он предоставляет только веса, есть ли способ получить или сохранить модели от клиентов прямо во время федеративного обучения?


person Endurance    schedule 22.12.2019    source источник


Ответы (1)


Ответ, упомянутый в исходном вопросе, предоставляет метод для отправки обратно весов модели; кажется, чего не хватает, так это того, как присвоить эти веса tf.keras.Model с такой же архитектурой? С помощью tff.learning.assign_weights_to_keras_model экземпляр модели Keras можно инициализировать с помощью веса клиентов, а экземпляр будет предоставлять стандартный API Keras (evaluate(), test_on_batch() и т. д.).

В руководстве Федеративное обучение для создания текста есть пример этого.

person Zachary Garrett    schedule 23.12.2019
comment
Спасибо за ответ. Чтобы было ясно, если я внесу изменения в 'simple_fedavg.py', мне нужно будет установить TFF из исходного кода? - person Endurance; 23.12.2019
comment
В зависимости от цели simple_fedavg.py должен использоваться с пакетом pip, он импортирует только пакет верхнего уровня. Другими словами, я ожидал, что можно будет просто import simple_fedavg в системе, в которой установлен пакет tenorflow_federated pip. Все, что находится в папке research/, считается экспериментальным и не входит в пакет pip, но обычно может использоваться с пакетом pip. - person Zachary Garrett; 23.12.2019
comment
Замечательно! Большое тебе спасибо. - person Endurance; 25.12.2019
comment
Код, упомянутый в упомянутом вопросе (для обработки дельты клиента), приводит к следующей ошибке: TypeError: tf_computation's can accept only parameter types with constituents SequenceType, NamedTupleType and TensorType; you have attempted to create one with the type <conv2d/kernel=float32[3,3,1,32],conv2d/bias=float32[32],conv2d_1/kernel=float32[3,3,32,64],conv2d_1/bias=float32[64],dense/kernel=float32[36864,10],dense/bias=float32[10]>*@SERVER В чем может быть проблема? - person Endurance; 25.12.2019
comment
Проблема связана с type несоответствием. client_deltas относятся к типу tensorflow_federated.python.core.impl.value_impl.ValueImpl. Есть идеи, как это можно исправить? - person Endurance; 26.12.2019
comment
не могли бы вы разобраться в этом? - person Endurance; 07.01.2020
comment
В сообщении об ошибке говорится, что tff.tf_computation декорированные методы принимают только неразмещенные значения, но вызываются со значением, помещенным в SERVER. Вероятно, tff.federated_map(function, value) (который применяет tff.tf_computation декорированный метод, называемый function, к < i> размещенное значение) может помочь? - person Zachary Garrett; 07.01.2020
comment
client_deltas = tff.federated_collect(client_outputs.weights_delta) @tff.tf_computation(client_deltas.type_signature) def check(deltas): print(deltas) tff.federated_map(check, (client_deltas)) Я попробовал это на основе вашего комментария, но ошибка не исчезла. - person Endurance; 08.01.2020