首页 > 解决方案 > Tensorboard 的问题并且没有记录

问题描述

我在这里使用 hparams 关注 google 的 tensorboard 教程。但是,当我尝试在自己的模型中实现它时,日志中没有显示任何内容。主要区别在于我使用了图像数据生成器,但我看不出这会如何影响超参数。我已经包含了所有用于获取超参数的代码,但为了方便起见,删除了我导入的模型和基本包。

# 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 参数构建模型的函数。除了在 model.fit 中使用 datagen.flow() 之外,没有任何变化。

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

标签: tensorflowtensorboardhyperparameters

解决方案


推荐阅读