Изучение параметров каждого моделируемого устройства - PullRequest
0 голосов
/ 18 февраля 2020

Поддерживает ли федерация tenorflow назначение разных гиперпараметров (например, размер партии или скорость обучения) для разных моделируемых устройств?

1 Ответ

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

В настоящее время это может показаться немного неестественным, но да, такая возможность возможна.

Один из подходов к этому, который поддерживается сегодня, заключается в том, чтобы каждый клиент использовал свою локальную скорость обучения в качестве вершины. -уровень, и используйте это в обучении. Дурацкий пример здесь будет (скольжение параметра модели в вычислениях ниже) что-то вроде

@tff.tf_computation(tff.SequenceTyoe(...), tf.float32)
def train_with_learning_rate(ds, lr):
  # run training with `tf.data.Dataset` ds and learning rate lr
  ...

@tff.federated_computation(tff.FederatedType([tff.SequenceType(...), tf.float32])
def run_one_round(datasets_and_lrs):
  return tff.federated_mean(
      tff.federated_map(train_with_learning_rate, datasets_and_lrs))

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

Такая вещь требует написания пользовательских федеративных вычислений и, в частности, вероятности определения ваших собственных IterativeProcess. Аналогичное определение итеративного процесса было недавно получено с открытым исходным кодом здесь, ссылка ведет на соответствующее определение локальной функции клиента , чтобы учесть планирование скорости обучения на клиентах, принимая дополнительный целочисленный параметр, представляющий круглое число, это, вероятно, хорошее место, чтобы посмотреть.

...