Executando várias épocas em clientes de federated-tensorflow

Oct 05 2020

Existe alguma maneira no tensorflow federado de fazer os clientes treinarem o modelo para várias épocas em seu conjunto de dados? Descobri nos tutoriais que uma solução poderia ser modificar o conjunto de dados executando dataset.repeat (NUMBER_OF_EPOCHS), mas por que devo modificar o conjunto de dados?

Respostas

1 ZacharyGarrett Oct 05 2020 at 22:14

Esta tf.data.Dataseté a maneira do TF2 de configurar isso. Pode ser útil pensar no código como uma modificação do "pipeline de dados" em vez do próprio "conjunto de dados".

https://www.tensorflow.org/guide/data e particularmente a seção https://www.tensorflow.org/guide/data#processing_multiple_epochs podem ser dicas úteis.

Em um alto nível, a tf.dataAPI configura um fluxo de exemplos. Repetições (várias épocas) desse fluxo também podem ser configuradas.

dataset = tf.data.Dataset.range(5)
for x in dataset:
  print(x) # prints 0, 1, 2, 3, 4 on separate lines.

repeated_dataset = dataset.repeat(2)
for x in repeated_dataset:
  print(x) # same as above, but twice

shuffled_repeat_dataset = dataset.shuffle(
  buffer_size=5, reshuffle_each_iteration=True).repeat(2)
for x in repeated_dataset:
  print(x) # same as above, but twice, with different orderings.