Я ищу способ получить клиентские модели в качестве контрольных точек, которые я могу исследовать как стандартную модель keras. Я изучил этот вопрос, но он предоставляет только веса, есть ли способ получить или сохранить модели от клиентов прямо во время федеративного обучения?
Как получить клиентские модели (на основе Keras) в федеративном тензорном потоке?
Ответы (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
Спасибо за ответ. Чтобы было ясно, если я внесу изменения в 'simple_fedavg.py', мне нужно будет установить TFF из исходного кода?
- person Endurance; 23.12.2019
В зависимости от цели simple_fedavg.py должен использоваться с пакетом pip, он импортирует только пакет верхнего уровня. Другими словами, я ожидал, что можно будет просто
import simple_fedavg
в системе, в которой установлен пакет tenorflow_federated pip. Все, что находится в папке research/
, считается экспериментальным и не входит в пакет pip, но обычно может использоваться с пакетом pip.
- person Zachary Garrett; 23.12.2019
Замечательно! Большое тебе спасибо.
- person Endurance; 25.12.2019
Код, упомянутый в упомянутом вопросе (для обработки дельты клиента), приводит к следующей ошибке:
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
Проблема связана с
type
несоответствием. client_deltas
относятся к типу tensorflow_federated.python.core.impl.value_impl.ValueImpl
. Есть идеи, как это можно исправить?
- person Endurance; 26.12.2019
не могли бы вы разобраться в этом?
- person Endurance; 07.01.2020
В сообщении об ошибке говорится, что
tff.tf_computation
декорированные методы принимают только неразмещенные значения, но вызываются со значением, помещенным в SERVER
. Вероятно, tff.federated_map(function, value)
(который применяет tff.tf_computation
декорированный метод, называемый function
, к < i> размещенное значение) может помочь?
- person Zachary Garrett; 07.01.2020
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