Добавление тензорной доски в федеративные настройки - PullRequest
1 голос
/ 10 марта 2020

Я новичок в использовании TensorBoard и хочу добавить его в этот проект:

https://github.com/TalwalkarLab/leaf

Мой конкретный случай c - это FE Модель MNIST, которая находится здесь: https://github.com/TalwalkarLab/leaf/blob/master/models/femnist/cnn.py

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

Я хочу иметь папку тензорной доски для каждого из клиентов и вести журнал для модели сервера (которая не обучается там сделано)

Я хочу знать, как получить доступ к весам и уклонам слоев и сохранить их на основе идентификаторов клиентов, которые и являются местом, которое вызывает тренировку.

Я видел Как мне использовать тензорную доску с tf.layers?

здесь говорится, что мы можем использовать

Код

for var in tf.trainable_variables():
    tf.summary.histogram(var.name, var)
merged_summary = tf.summary.merge_all()

(который я не уверен, куда мне его добавить)

Как я могу передать клиента идентификатор сеанса, чтобы его можно было хранить в соответствующих папках?

1 Ответ

0 голосов
/ 19 марта 2020

Вы можете проверить использование тензорной доски здесь .

В Tensorflow 2.x, на основе документации:

При обучении с Keras's Model.fit () Добавление обратного вызова tf.keras.callbacks.TensorBoard обеспечивает создание и сохранение журналов. Кроме того, включите вычисление гистограммы в каждую эпоху с помощью histogram_freq = 1

model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])

или другой параметр -

def add_hist(train_vars, step):
    for i in train_vars:
        name = i.name.split(":")[0]
        value = i.value()
        tf.summary.histogram(name, value, step)

for epoch in range(EPOCHS):
  for (x_train, y_train) in train_dataset:
    train_step(model, optimizer, x_train, y_train, epoch)
  with train_summary_writer.as_default():
    tf.summary.scalar('loss', train_loss.result(), step=epoch)
    tf.summary.scalar('accuracy', train_accuracy.result(), step=epoch)
    add_hist(model.trainable_variables, epoch)
...