Есть ли разумный способ создания наборов данных клиентов tff? - PullRequest
1 голос
/ 19 сентября 2019

Мне интересно, есть ли какие-нибудь разумные способы для генерации наборов данных клиентов для федеративного моделирования обучения с использованием основного кода TFF?В учебном пособии для федеративного ядра оно использует базу данных MNIST, причем каждый клиент имеет только одну отдельную метку в своем наборе данных.В этом случае доступно только 10 различных ярлыков.Если я хочу иметь больше клиентов, как я могу это сделать?Заранее спасибо.

1 Ответ

0 голосов
/ 23 сентября 2019

В TFF есть предварительно обработанные наборы данных моделирования, которые должны служить этой цели довольно хорошо.Возьмем, к примеру, загрузку EMNIST, где изображения разделены writer , соответствующим пользователю, а не меткой.Это можно загрузить в среду выполнения Python довольно просто (здесь создаются данные поезда с 100 клиентами):

source, _ = tff.simulation.datasets.emnist.load_data()

def map_fn(example):
  return {'x': tf.reshape(example['pixels'], [-1]), 'y': example['label']}

def client_data(n):
  ds = source.create_tf_dataset_for_client(source.client_ids[n])
  return ds.repeat(10).map(map_fn).shuffle(500).batch(20)

train_data = [client_data(n) for n in range(100)]

Существуют наборы данных, разделенные аналогичным образом для расширенного MNIST (IE, включая рукописные символы в дополнение кцифры), пьесы Шекспира (разделенные символом) и сообщения Stackoverflow (разделенные пользователем).Документацию по этим наборам данных можно найти здесь .

Если вы хотите создать свой собственный набор данных, см. Ответ здесь .

...