Как распечатать значения, переданные клиентом в объединенном тензорном потоке? - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь понять тензор потока федерации. Я имел в виду сайт https://www.tensorflow.org/federated/tutorials/custom_federated_algorithms_2#gradient_descent_on_a_sequence_of_local_data. Здесь я не понимаю, как распечатать значения, переданные каждым клиентом в этой функции?

SERVER_FLOAT_TYPE = tff.FederatedType(tf.float32, tff.SERVER, all_equal=True)

@tff.federated_computation(
    SERVER_MODEL_TYPE, SERVER_FLOAT_TYPE, CLIENT_DATA_TYPE)
def federated_train(model, learning_rate, data):
  return tff.federated_mean(
      tff.federated_map(
          local_train,
          [tff.federated_broadcast(model),
           tff.federated_broadcast(learning_rate),
           data]))

, а также кто-нибудь может сказать мне, что толку от tff.sequence_reduce.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 21 февраля 2020

Если вы хотите проверить значения на клиентах здесь, есть несколько способов представить это.

Можно было бы использовать tf.print op внутри local_train, если это функция - это tff.tf_computation, что, на мой взгляд, здесь не так.

Другой вариант - вытащить вызовы функций немного больше, поэтому вместо записи tff.federated_mean(tff.federated_map(local_train...))

мы могли бы write

train_results_on_clients = tff.federated_map(local_train...)
aggregated_result =tff.federated_mean(train_results_on_clients)

Затем, если внешняя функция возвращает оба этих значения, значение, материализованное во время выполнения Python, представляющее train_results_on_clients, будет результатом запуска одного раунда обучения на всех клиентах, представлен в виде списка с одной записью на клиента; TFF позволяет вам делать это так же, как вы можете проверять промежуточные значения функции, возвращая их.

Одна вещь, которая будет не работать, - вставить оператор печати Python внутри федеративные вычисления; это будет выполнено только во время трассировки по тем же причинам, по которым необходимо использовать tf.print вместо Python печати внутри графиков TF (по крайней мере, без автографа).

Что касается tff.sequence_reduce , его цель в действительности состоит в том, чтобы продемонстрировать локальность вычислений c дизайн TFF; В данном случае, модель обучения l oop может быть записана способом TensorFlow как c как локальный механизм вычислений.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...