Проблема с Tensorboard и ничего не регистрирует - PullRequest
0 голосов
/ 02 августа 2020

Я следил за учебником по тензорной доске Google с hparams здесь . Однако, когда я пытаюсь реализовать это в своей собственной модели, в журналах ничего не отображается. Основное отличие состоит в том, что я использовал генератор данных изображений, но я не вижу, как это повлияет на гиперпараметры. Я включил весь код, используемый для получения гиперпараметров, но для простоты удалил модель и базовые c пакеты, которые я импортировал.

# Load the TensorBoard notebook
%load_ext tensorboard
# Clear all logs
!rm -rf ./logs/

Вот что я установил для гиперпараметров. Просто скорость обучения и спад веса. Немного расширено из учебника, но в основном тот же стиль.

HP_lr = hp.HParam('learning_rate', hp.Discrete([3, 4, 5]))
HP_weight_decay= hp.HParam('l2_weight_decay', hp.Discrete([4, 5, 6]))
METRIC_ACCURACY = 'accuracy'

Это немного отличается от приведенных выше значений, но это просто имена переменных

# file writer
with tf.summary.create_file_writer('logs/hparam_tuning').as_default():
  hp.hparams_config(
    hparams=[HP_lr, HP_weight_decay],
    metrics=[hp.Metric(METRIC_ACCURACY, display_name='Accuracy')],
  )

У меня есть функция, которая строит модель с аргументом hparams. Помимо использования datagen.flow () в model.fit ничего не меняется.

def train_test_model(hparams):
  model = build_model(hparams)
  model.fit(datagen.flow(x_train, y_train, batch_size=64),
                    epochs=1,verbose=0)
  _, accuracy = model.evaluate(x_test, y_test,batch_size=64, verbose = 1)
  return accuracy

# For each run log the metrics and hyperparameters used
def run(run_dir, hparams):
  with tf.summary.create_file_writer(run_dir).as_default():
    hp.hparams(hparams)  # record the values used in this trial
    accuracy = train_test_model(hparams)
    tf.summary.scalar(METRIC_ACCURACY, accuracy, step=1)

Устанавливает словарь, который будет использоваться hp

session_num = 0
for learn_rate in HP_lr.domain.values:
  for wd in HP_weight_decay.domain.values:
      hparams = {
          HP_lr: 1*10**(-learn_rate), # transform to something like 1e-3
          HP_weight_decay: 1*10**(-wd)
      }
      run_name = "run-%d" % session_num
      print('--- Starting trial: %s' % run_name)
      print({h.name: hparams[h] for h in hparams})
      run('logs/hparam_tuning/' + run_name, hparams)
      session_num += 1

%tensorboard --logdir logs/hparam_tuning
...