Спасибо за ваш интерес к TFF!
Как правило, TFF предназначен для приема tf.data.Dataset
объектов, поэтому в приведенном выше примере требуется дополнительная дополнительная предварительная обработка.
Хорошая новость в том, что существует существующий учебник , показывающий пример этого. В приведенном выше примере должно работать что-то вроде следующего:
ds = tf.data.Dataset.from_generator(
img_gen.flow_from_directory, args=[<your_directory>],
output_types=<your_types>,
output_shapes=<your_shapes>
)
Обычно объект ClientData
можно представить как причудливый dict
, отображающий идентификаторы клиента на tf.data.Datasets
. ClientData
сам по себе является абстрактным классом, и поэтому не может быть непосредственно создан, а методы класса предоставлены для создания реальных реализаций ClientData
. Один такой метод класса, который должен работать здесь, будет tff.simulation.ClientData.from_clients_and_fn
. Здесь, если вы передадите список client_ids
и функцию, которая возвращает соответствующий набор данных при получении идентификатора клиента, вы получите полностью функциональный ClientData
.
Я думаю, здесь есть подход для определения функции, которую вы можете использовать, нужно создать Python dict
, который сопоставляет идентификаторы клиента с tf.data.Dataset
объектами. Затем вы можете определить функцию, которая принимает идентификатор клиента, ищет набор данных в dict и возвращает набор данных.
Надеюсь, это поможет!